动作监听器java问题



好的,所以我正在制作一款游戏,现在我有一个图像,我试图在图像的特定位置放置按钮,所以当用户点击屏幕的那一部分时,图像会发生变化。我有麻烦试图找出如何格式化我的程序为行动监听器。

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. 如果它们执行相同的操作,则在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
             }
         });
    }
    

更新:对不起,我刚刚注意到你有四个按钮…你可以再添加一个:)

相关内容

  • 没有找到相关文章

最新更新