我正在使用 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 并将一些值保存在变量中。我怎样才能做到这一点?
万千封印
相关分类