import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; class MyButton extends JButton { public MyButton(String label) { super(label); } public Dimension getPreferredSize() { Dimension size = super.getPreferredSize(); return new Dimension((int)(size.getWidth()*2), (int)(size.getHeight()*2) ); } public void paintComponent(java.awt.Graphics g) { super.paintComponent(g); g.drawString("MyButton", 10, 10); g.drawLine(10, 10, 100, 100); } } public class FirstGUI extends JPanel implements ActionListener, WindowListener, Runnable { JFrame frame; JButton button1, button2; int seconds = 0; //秒数 public static void main(String[] args) { new FirstGUI(); } public FirstGUI(){ frame = new JFrame("FirstGUI"); frame.setSize(300,200); frame.getContentPane().add(this); this.add(button1 = new JButton("Button")); this.add(button2 = new JButton("Button2")); MyButton button3; this.add(button3 = new MyButton("Button3")); button1.addActionListener(this); button1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ System.out.println(e.getActionCommand() ); } }); button2.addActionListener(e -> { System.out.println(e.getActionCommand()); } ); frame.addWindowListener(this); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } @Override public void actionPerformed(ActionEvent e) { frame.pack(); System.out.println(e.getActionCommand()); Thread thread = new Thread(this); thread.start(); } @Override public void windowOpened(WindowEvent e) { } @Override public void windowClosing(WindowEvent e) { java.awt.Toolkit.getDefaultToolkit().beep(); } @Override public void windowClosed(WindowEvent e) { } @Override public void windowIconified(WindowEvent e) { } @Override public void windowDeiconified(WindowEvent e) { } @Override public void windowActivated(WindowEvent e) { } @Override public void windowDeactivated(WindowEvent e) { } @Override public void run() { for(int i=0; i< 10;i++){ System.out.println(i+" sec"); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } }