import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JOptionPane; class MyJButton extends JButton implements ActionListener , Runnable { Thread thread; public MyJButton(String label){ super(label); } public Dimension getPreferredSize(){ return new Dimension(300, 100); } @Override public void actionPerformed(ActionEvent e) { if (thread == null){ thread = new Thread(this); thread.start(); } else { thread = null; } FirstGUI.jf.pack(); System.out.println(e.getActionCommand()); } int num = 0; @Override public void run() { while(thread != null){ num++; setText("Second: "+num); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } } class MyThread extends Thread { } public class FirstGUI { static JFrame jf; public static void main(String[] args){ System.out.println("FirstGUI"); jf = new JFrame("FirstGUI"); MyJButton jb = new MyJButton("Label Label Label"); jb.addActionListener(jb); jb.addActionListener( e -> System.out.println("Button was pressed") ); jb.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(jb,"Button was pressed."); } }); jf.getContentPane().add(jb); // jf.setSize(300,200); jf.pack(); jf.setVisible(true); jf.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); } }