Вы звоните calculate()
только тогда, когда нажата кнопка start
. Таким образом, вы можете переместить этот метод в ActionListener для кнопки. И, позвонив setText
на JLabel, вам не нужно звонить repaint
. Обычно вам не нужно звонить repaint
в Swing. Например. замените ваш код на что-то вроде этого:
final JLabel label1 = new JLabel("You have pressed button " + pressed + "times.");
private JButton start = new JButton(new AbstractAction("Click To Start!") {
public void actionPerformed(ActionEvent e) {
pressed++;
label1.setText("You have pressed button " + pressed + "times.");
}
});