我正在使用 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 并将一些值保存在变量中。我怎样才能做到这一点?
2 回答
万千封印
TA贡献1891条经验 获得超3个赞
首先,最好在单个线程中提出一个问题。
main
atGUI
和Main
class的方法不一样。您还需要那些JFrame
在Main
课堂上创建代码的人。
你的第二个问题我不清楚。
添加回答
举报
0/150
提交
取消