当我试图调用actionPerformed方法中的panel2时,我得到了NullPointerException。请帮我摆脱这愚蠢的prblm。
public class PanelEventTest implements ActionListener {
/**
* @param args
*/
JFrame frame;
JPanel panel1, panel2;
String[] list = {"Sachin","Tarun","Vipin"};
JList jlist;
JButton next;
void originalFrame()
{
frame = new JFrame();
frame.setSize(500, 300);
frame.setVisible(true);
frame.setLayout(new FlowLayout());
frame.add(panel1());
frame.add(panel2());
}
JPanel panel1()
{
panel1 = new JPanel();
next = new JButton("Next");
next.addActionListener(new PanelEventTest());
panel1.add(next);
return panel1;
}
JPanel panel2()
{
panel2 = new JPanel();
jlist = new JList(list);
panel2.add(jlist);
panel2.add(new JLabel("Test"));
return panel2;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new PanelEventTest().originalFrame();
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getActionCommand() == "Next")
{
panel2.removeAll();
}
}
}
action事件没有附加在panel2中,这是导致此异常的原因吗?
而不是
next.addActionListener(new PanelEventTest());
你应该
next.addActionListener(this);
否则,事件侦听器将是PanelEventTest的另一个实例,其originalFrame()
方法从未被调用,因此其Panel2
变量为空。(注意,即使调用了它的originalFrame()
方法,它也会从自己的panel2中删除所有内容,而不是从包含按钮的框架的panel2中删除所有内容)。
next.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
panel2.removeAll();
}
});
我使用子JPanel构造JScrollPane,然后尝试将JScrollPane添加到父JPanel中,希望有一个可滚动的自定义JPanel。 我有一个大的细白线前面的所有我的组件,他们是没有滚动。有什么想法吗?
问题内容: 今天,我遇到了一个问题..我的程序制作了一个8x8的网格,并在单击时显示了坐标。 但是我拒绝使用,我需要去..但是我 没有工作,所以我不知道怎么可能解决自4小时以来我正在搜索的问题..... 问题答案: 没有功能。相反,您需要使用 看看如何编写鼠标侦听器以了解更多详细信息…
我想在我的基本框架中添加一个带有JPanel的JScrollpane 如果我将带有的直接添加到中,就可以了。但是现在,当我将帧的大小减小到500像素以下时,变得更小,如第二张图片所示。 如何使JScrollPane工作?
我真的对此感到困惑。我在做“微旅行”游戏。这是手机游戏,但我是为电脑制作的。我有一个扩展JPanel的背景类,它只绘制一个从0开始的矩形,并且有屏幕的大小(我的游戏是全屏)。我有一个主菜单类,它也扩展了JPanel。我想在那里添加主菜单的所有内容。然后,我将所有内容添加到扩展JFrame的GameFrame类中。我有一个main类,它只是调用GameFrame类。下面是我的代码:背景类: Main
我有一个,名为,布局设置为。在面板内部有三个,分别添加到、和。现在,我的要求是,如果单击Settings按钮,它将在上方显示一个透明的。这个透明的面板将包含一个不透明的,更小的,居中的面板,其中将包含设置的东西。 我知道我可以使用来实现这一点,但是查看教程,它说您只能使用绝对定位来放置不同深度的组件,我知道这是非常不鼓励的。 是否有其他方法可以做到这一点,而不使用绝对定位?
主要内容:1 Java JPanel的介绍,2 Java JPanel的声明,3 Java JPanel的构造方法,4 Java JPanel的案例1 Java JPanel的介绍 JPanel是最简单的容器类。它提供了一个空间,应用程序可以在其中附加任何其他组件。它继承了JComponents类。 它没有标题栏。 2 Java JPanel的声明 3 Java JPanel的构造方法 方法 描述 JPanel() 用于创建具有双缓冲区和流布局的新JPanel。 JPanel(boolean i