Я создал небольшое приложение-калькулятор на основе графического интерфейса пользователя Java, но возникает проблема, заключающаяся в том, что оно ничего не показывает на экране, когда я его запускаю, оно сразу же существует автоматически. Что пошло не так? Вот код моего java-класса SmallCalcApp: .................................................. .................................................. .................................................. ....................
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class SmallCalcApp implements ActionListener{
JFrame frame;
JLabel firstOperand, secondOperand, answer;
JTextField op1, op2, ans;
JButton plus, mul;
public SmallCalcApp(){
initGUI();
}
public void initGUI(){
frame = new JFrame();
Container con = frame.getContentPane();
con.setLayout(new FlowLayout());
plus = new JButton("+");
mul = new JButton("*");
con.add(plus);
con.add(mul);
plus.addActionListener(this);
mul.addActionListener(this);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(200,200);
frame.setVisible(true);
}
public void actionPerformed(ActionEvent event){
String oper, result;
int num1, num2, res;
if (event.getSource() == plus){
oper = op1.getText();
num1 = Integer.parseInt(oper);
oper = op2.getText();
num2 = Integer.parseInt(oper);
res = num1 + num2;
result = res + "";
ans.setText(result);
}
if (event.getSource() == mul){
oper = op1.getText();
num1 = Integer.parseInt(oper);
oper = op2.getText();
num2 = Integer.parseInt(oper);
res = num1 * num2;
result = res + "";
ans.setText(result);
}
}
public static void main(String args[]){
SmallCalcApp sc;
}
}




Это потому, что вы не создаете никаких экземпляров SmallCalcApp.
Заменять:
SmallCalcApp sc; в SmallCalcApp sc = new SmallCalcApp(); для этого.
Кроме того, все приложения Swing должны работать в собственном потоке. Для получения дополнительной информации прочтите это..
Итак, ваш основной должен быть таким:
public static void main(String args[]) {
SwingUtilities.invokeLater(() -> {
new SmallCalcApp();
});
}