************************关于事件监听器,附实例,100分*************************
package sxh;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class Puzzle {
public static void main(String[] args) {
PuzzleFrame frame = new PuzzleFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}
/**
A frame with a Puzzle panel.
*/
class PuzzleFrame extends JFrame {
public PuzzleFrame() {
setTitle("Puzzle");
setSize(WIDTH, HEIGHT);
Container contentPane = getContentPane();
PuzzlePanel panel = new PuzzlePanel();
contentPane.add(panel);
}
public static final int WIDTH = 220;
public static final int HEIGHT = 220;
}
/**
A panel with Puzzle buttons and a result display.
*/
class PuzzlePanel extends JPanel {
JButton[] button = { new JButton("1"),new JButton("2"),new JButton("3"),new JButton("4"),
new JButton("5"),new JButton("6"),new JButton("7"),new JButton("8"),
new JButton("9"),new JButton("10"),new JButton("11"),new JButton("12"),
new JButton("13"),new JButton("14"),new JButton("15"),new JButton("")};
private int i;
private JPanel panel;
public PuzzlePanel() {
setLayout(new BorderLayout());
// add the buttons in a 4 x 4 grid
panel = new JPanel();
panel.setLayout(new GridLayout(4,4,1,1));
for(int i=0;i<button.length;i++)
panel.add(button[i]);
button[i].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
if (button[i+4].getActionCommand().equals("")) {
button[i+4].setText(button[i].getActionCommand());
button[i].setText("");
} //up
else if (button[i-4].getActionCommand().equals("")) {
button[i-4].setText(button[i].getActionCommand());
button[i].setText("");
} //down
else if (button[i-1].getActionCommand().equals("")) {
button[i-1].setText(button[i].getActionCommand());
button[i].setText("");
} //left
else if (button[i+1].getActionCommand().equals("")) {
button[i+1].setText(button[i].getActionCommand());
button[i].setText("");
} //right
}
});
add(panel);
}
}
可以编译,但为什么运行后点击按钮没用!
帮忙改一下!
谢了!