Я работаю над программой с графическим интерфейсом. пользователь вводит число, которое слушатель действия сохраняет в переменной, а затем отправляет эту переменную классу main, в котором она сохраняется в другой переменной. Проблема в том, что в настоящее время я не сохраняю значение должным образом (иногда это сохраняет, а иногда нет. Я хочу, чтобы, когда пользователь вводит значение в графическом интерфейсе, а затем нажимает кнопку, в которой это значение сохраняется переменная в основном классе. Я новичок в Java, поэтому, пожалуйста, извините за мое ужасное кодирование.
Это мой основной класс.
public class Main {
public static boolean Click=false;
public static void main(String[] args) {
int n=0, i;
JFrame Frame = new JFrame();
Input1 I1 = new Input1();
Frame.setSize(600, 600);
Frame.setLocationRelativeTo(null);
Frame.setContentPane(I1.Input1Panel);
Frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Frame.pack();
Frame.setVisible(true);
while (Click==false) {
n = I1.Setn();
System.out.println(""+n);
}
А это мой класс по графическому интерфейсу.
public class Input1 {
private JButton doneButton;
private JTextField textField1;
private JLabel Title;
private JLabel EnterNum;
public JPanel Input1Panel;
public int n;
Main M = new Main();
public Input1() {
doneButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
n = Integer.parseInt(textField1.getText());
while (M.Click==false) {
if (n==0) {
n = Integer.parseInt(textField1.getText());
}
else {
M.Click=true;
}
}
}
});
}
public int Setn() {
return n;
}
}
Новый код
Основной класс
public class Main {
public static void main(String[] args) {
int n=0, i;
JFrame Frame = new JFrame();
Input1 I1 = new Input1();
Frame.setSize(600, 600);
Frame.setLocationRelativeTo(null);
Frame.setContentPane(I1.Input1Panel);
Frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Frame.pack();
Frame.setVisible(true);
while (n==0) {
n = I1.Setn();
//System.out.println(""+n);
}
System.out.println("Main:"+n);
Класс GUI
public class Input1 {
private JButton doneButton;
private JTextField textField1;
private JLabel Title;
private JLabel EnterNum;
public JPanel Input1Panel;
public int n;
Main M = new Main();
public Input1() {
doneButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
n = Integer.parseInt(textField1.getText());
System.out.println("Action Listener:"+n);
}
});
}
public int Setn() {
return n;
}
}