-1

私は 1 週間前に Java の学習を始めたばかりで、100% まったくの初心者です。このコードでは、アクション リスナーを配置/取得することができないようです。何十ものチュートリアルを読んでも、どこに、どのように、どのように配置すればよいかさえわかりません。JPanel を含む JFrame を作成しました。JPanel にはボタンがあります。これまでのところ、うまくいっています(そして動作しています)。しかし、ボタンをクリックすると別のボタンが表示されるようにしたいのです。よろしくお願いします!

import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
public class Skeleton extends JFrame implements ActionListener {

    public static void main(String[] args) {
    //------------------------------------------------
    JFrame frame = new JFrame("Skeleton");
    JPanel panel = new JPanel();
frame.setContentPane(panel);
    frame.setSize(600,600);
    frame.setResizable(false);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
    frame.setLocationRelativeTo(null);
    JButton button = new JButton("This is a button.");
    JButton button2 = new JButton("Hello");
    panel.setLayout(null);
    button.setBounds(20,20,200,25);
    button2.setBounds(20,70,200,25);
    panel.add(button);
   //-------------------------------------------

button.addMouseListener(this);


}

public void ActionPerformed(ActionEvent e) {
    System.out.println("Hello");

}
}
4

2 に答える 2

4

私はあなたにいくつかのアドバイスをします

1) トップ クラスに ActionListener を実装しないでください。代わりに、匿名クラスまたはプライベート クラスを使用してください。

例 :

匿名クラス (Swing アクションとも呼ばれます)

myComponent.addActionListener(new ActionListener(){
      @Override
      public void actionPerformed(ActionEvent evt){
              //code here
      }

})

また

//inner class
public class Skeleton{

// in some part
private class MyActionListener implements ActionListener{
      public void actionPerformed(ActionEvent evt){
             //code here
       }
}


}

2) ActionListener インターフェイスを実装していないため、コードはコンパイルされません

public void actionPerformed(ActionEvent evt)署名です。

あなたaddActionListenerのコンポーネントにする必要があります

button.addActionListener(this);

3) null レイアウトを使用しないでください。コンポーネントを追加したり、ウィンドウのサイズを変更したりするには、多くの問題が発生するため、setBounds手動で行う必要があり、代わりに[Layout Manager][1].

4) たとえば、JFrame を拡張しないようにします。必要でない場合は、代わりにクラスに参照を含めます。

  public class Skeleton{

    private JFrame frame;

    }
于 2013-07-04T18:38:32.377 に答える