动作侦听器Java问题

提米(Timmi)

好的,我正在玩游戏,现在我有一个图像,我试图将按钮放置在图像下方的特定位置,因此当用户单击屏幕的该部分时,图像会发生变化。我在尝试弄清楚如何为动作侦听器格式化程序时遇到了麻烦。

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");
    }
}

因此,任何帮助将不胜感激。

阿米·霍兰德(Ami Hollander)

取决于您要在侦听器中实现什么:

  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
             }
         });
    }
    

更新:对不起,我刚刚注意到您有四个按钮...您可以添加另一个按钮:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章