动作监听器java问题

时间:2016-07-02 14:06:20

标签: java swing user-interface netbeans

好的,所以我正在开发游戏,现在我有一个图像,我试图在特定的地方放置图像下的按钮,所以当用户点击屏幕的那一部分时,图像会发生变化。我无法弄清楚如何为动作监听器格式化我的程序。

public class TestJFrame{
    private static JFrame frame = new JFrame();
    private static JLabel label = new JLabel();
    private static JButton buttons[] = new JButton[4];

    private static int[][] location = new int[3][4];


    public static void main(String args[]){
        frame.getInsets().set(20, 5, 5, 5);

        frame.setLayout(null);
        frame.setPreferredSize(new Dimension(507, 528));
        frame.pack();
        frame.setResizable(false);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setTitle("Test");

        buttons[0] = new JButton("jbZero");
        buttons[1] = new JButton("jbOne"); 
        buttons[2] = new JButton("jbTwo");
        buttons[3] = new JButton("jbThree");

        frame.add(buttons[0]);
        frame.add(buttons[1]);
        frame.add(buttons[2]);
        frame.add(buttons[3]);

        setButtons();
        frame.setVisible(true);

        buttons[0].setLocation(100, 100);
    }


    private static void setButtons(){
        for (int i=0;i<=3;i++){
            buttons[i].setSize(10, 10);
            buttons[i].setLocation(0, 0);
            buttons[i].setVisible(true);
        }
    }

    public void intializeListener(){
        buttons[0].addActionListener((ActionListener) this);        
    }

    public void buttonsZeroActionPreformed(java.awt.event.ActionEvent e){
        System.out.println("button zero works");
    }
}

所以任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:1)

取决于你想在侦听器中实现什么:

  1. 如果他们执行相同的操作,则在setButtons函数中实现侦听器:

    private static void setButtons(){
        for (int i=0;i<=3;i++){
            buttons[i].setSize(10, 10);
            buttons[i].setLocation(0, 0);
            buttons[i].setVisible(true);
    
            buttons[i].addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                     // listener implement btn 0
                }
            });
        }
    }
    
  2. 如果每个按钮都需要独特的实现,我认为更好的实现将在一个新的函数setBtnListeners中,并在使用setButtons();后从您的主函数中调用它:

    private static void setBtnListeners() {
         buttons[0].addActionListener(new ActionListener() {
             @Override
             public void actionPerformed(ActionEvent e) {
                  // listener implement btn 0
             }
         });
    }
    
  3. 更新:抱歉,我刚注意到您有四个按钮......您可以添加另一个按钮:)