读书人

求大牛解释程序运行不了在面板中实

发布时间: 2013-11-20 12:46:02 作者: rapoo

求大牛解释,程序运行不了,在面板中实现3个按钮,点击变换相应颜色

import java.awt.Color;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;


public class Test {

/**
* @param args
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable()
{
public void run()
{
TestFrame frame = new TestFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});

}

}
class TestFrame extends JFrame
{
public TestFrame()
{
setTitle("First Swing Test");
setSize(FRAME_WIDTH,FRAME_HEIGHT);

makeButton("yellow",Color.YELLOW);
makeButton("pink",Color.PINK);
makeButton("red",Color.RED);

}
public void makeButton (String name,final Color backgroundColor)
{
JButton button = new JButton(name);
buttonPanel.add(button);

button.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
buttonPanel.setBackground(backgroundColor);
}
});
}

private JPanel buttonPanel;

private static int FRAME_WIDTH = 350;
private static int FRAME_HEIGHT = 500;
}





我没换匿名类之前运行好好的,然后精简下,设置了个方法makeButton,设置了匿名类就不行了,求大牛解释了,急啊
[解决办法]


class TestFrame extends JFrame {
private JPanel buttonPanel;

private static int FRAME_WIDTH = 350;
private static int FRAME_HEIGHT = 500;
/**
*
*/
private static final long serialVersionUID = 1L;

public TestFrame() {
setTitle("First Swing Test");
setSize(FRAME_WIDTH, FRAME_HEIGHT);

/**
* 你写了一个 buttonPanel 变量,但是却没有给它赋值,所以出现了空指针的问题。 下面我给它进行了赋值,问题就解决了。
*/
buttonPanel = new JPanel();
add(buttonPanel);
makeButton("yellow", Color.YELLOW);
makeButton("pink", Color.PINK);
makeButton("red", Color.RED);

}

public void makeButton(String name, final Color backgroundColor) {
JButton button = new JButton(name);
buttonPanel.add(button);

button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
buttonPanel.setBackground(backgroundColor);
}
});
}

}

读书人网 >J2SE开发

热点推荐