●2つのオブジェクトを作ればそれぞれ別々に動作します。ここがオブジェクト指向の楽珍なところです。
●全く同じカウンタを2つ並べます。
/** * 2つのパネル */ import javax.swing.*; import java.awt.*; import java.awt.event.*; public class TwoButtons2 extends JFrame{ /* コンストラクタ */ public TwoButtons2(){ setSize(200, 150); //サイズと位置を指定 setDefaultCloseOperation(EXIT_ON_CLOSE); //終了処理を追加 MyJPanel panel01 = new MyJPanel(); //パネルをつくる MyJPanel panel02 = new MyJPanel(); //パネルをつくる Container cn = getContentPane(); //コンテナ取得 cn.setLayout(new BorderLayout()); cn.add(panel01, BorderLayout.EAST); //パネルをコンテナに貼る cn.add(panel02, BorderLayout.WEST); //パネルをコンテナに貼る setVisible(true); //実際に表示する } /********* main **********/ public static void main(String[] args){ /* フレームを作成(事実上のプログラム実行) */ TwoButtons2 frame1 = new TwoButtons2(); } /* パネルを作るクラス */ public class MyJPanel extends JPanel implements ActionListener { JButton button1; JButton button2; JLabel label; int count = 0; /* コンストラクタ */ public MyJPanel(){ setBackground(new Color(240,255,255)); //パネル色 button1 = new JButton("Click Me!"); //ボタン1 button2 = new JButton("Clear"); //ボタン2 label = new JLabel("clicks",JLabel.CENTER); //ラベル setLayout(new BorderLayout()); //レイアウトマネージャを指定 add(label, BorderLayout.CENTER); //ラベルを真ん中に add(button1, BorderLayout.SOUTH); //ボタンを下に配置 add(button2, BorderLayout.NORTH); //ボタンを下に配置 button1.addActionListener(this); button2.addActionListener(this); } /* イベントがあったらここに来る */ public void actionPerformed(ActionEvent e) { if (e.getSource() == button1) { count++; label.setText(count + " clicks"); } else if (e.getSource() == button2) { count = 0; label.setText(count + " clicks"); } } } }