import java.awt.event.WindowEvent; import javax.swing.JButton; import javax.swing.JFrame; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; class MyThread extends Thread { int num; public void run(){ while(true){ System.out.println(num); num++; try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } } class SelfActionJButton extends JButton implements ActionListener, Runnable { int num; @Override public void actionPerformed(ActionEvent e) { System.out.println("Button [" + e.getActionCommand() + "] was pressed."); // new MyThread().start(); new Thread(this).start(); FirstGUI.rootjf.setTitle("Button was pressed"); } public SelfActionJButton(String label){ super(label); this.addActionListener(this);// new FirstGUI()); } @Override public void run() { while(true){ System.out.println("["+num+"]"); num++; try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } } public class FirstGUI /*implements ActionListener*/ { public static JFrame rootjf; //アプリケーションのメインのウィンドウ public static void main(String[] args) { SelfActionJButton jb = new SelfActionJButton("ボタン"); // ActionListener( ); JFrame jf = new JFrame("FirstGUI"); jf.getContentPane().add(jb); // jf.setSize(300, 300); jf.pack(); jf.setVisible(true); jf.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0); } }); rootjf = jf; } }