Java Swing GUI 未显示使用多个类

我正在使用 gridbaglayout 制作一个 GUI 类,这很好。我想创建这个类的一个对象并从我的主类中“生成”它。但是,当我运行主类时,什么也没有发生。当我运行 GUI 类时,GUI 出现。这里发生了什么?


public class GUI extends JFrame {


    JButton btnStart;

    JPanel pnlRadio, pnlMain;

    JLabel lblUsername, lblPassword, lblHerb;

    JTextField txtUsername, txtPassword;

    ButtonGroup btngrHerbs;

    JRadioButton rdbHarralander, rdbRanarr, rdbToadflax;

    GridBagConstraints gbc;


    public GUI() {

        pnlMain = new JPanel();

        pnlMain.setLayout(new GridBagLayout());

        gbc = new GridBagConstraints();


        pnlRadio = new JPanel();


        btnStart = new JButton("Start");

        lblUsername = new JLabel("Username");

        lblPassword = new JLabel("Password");

        txtUsername = new JTextField();

        txtPassword = new JTextField();

        btngrHerbs = new ButtonGroup();

        rdbHarralander = new JRadioButton("Harralander");

        rdbRanarr = new JRadioButton("Ranarr");

        rdbToadflax = new JRadioButton("Toadflax");


        // Some layout stuff for gridbagconstraints, etc


        gbc = new GridBagConstraints();

        gbc.gridx = 0;

        gbc.gridy = 3;

        gbc.gridwidth = 2;

        pnlMain.add(btnStart, gbc);


        btnStart.addActionListener(e ->{

            synchronized(Main.lock){

                Main.lock.notify();

            }

            this.setVisible(false);

        });


    }


    public JPanel getUI() {

        return pnlMain;

    }


    public static void main(String[] args) throws InvocationTargetException, InterruptedException {


        JFrame frame = new JFrame("Example");

        frame.getContentPane().add(new GUI().getUI());

        frame.setLocationRelativeTo(null);

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


        frame.setVisible(true);

        frame.pack();


    }

}


所以当我运行 GUI 类时,什么都没有发生。GUI 按预期显示,但当然当我单击按钮时没有任何反应。当我启动主类时,GUI 甚至没有出现,我也没有在控制台上打印“A”。所以它似乎一直在等待那个锁对象?


我想要的是等待按钮被按下的主类,然后将 GUI 设置为 false 并将一些值保存在变量中。我怎样才能做到这一点?


婷婷同学_
浏览 125回答 2
2回答

万千封印

首先,最好在单个线程中提出一个问题。mainatGUI和Mainclass的方法不一样。您还需要那些JFrame在Main课堂上创建代码的人。你的第二个问题我不清楚。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java