好的,所以我正在开发游戏,现在我有一个图像,我试图在特定的地方放置图像下的按钮,所以当用户点击屏幕的那一部分时,图像会发生变化。我无法弄清楚如何为动作监听器格式化我的程序。
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");
}
}
所以任何帮助都会非常感激。
答案 0 :(得分: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
}
});
}
}
如果每个按钮都需要独特的实现,我认为更好的实现将在一个新的函数setBtnListeners
中,并在使用setButtons();
后从您的主函数中调用它:
private static void setBtnListeners() {
buttons[0].addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// listener implement btn 0
}
});
}
更新:抱歉,我刚注意到您有四个按钮......您可以添加另一个按钮:)