java问题添加/删除面板onclick

时间:2012-02-29 07:48:48

标签: java swing jpanel netbeans-7

美好的一天,

我创建了多个面板,第一个正在显示。我需要删除面板,并在用户单击下一个图标时添加一个新面板。在下面的代码中,动作侦听器中无法识别面板引用。我该如何解决这个问题?

    int n=0;
    for (int l=0; l < layOutPanelCount; l++) {
        layOutPanel[l] = new JPanel();
        layOutPanel[l].setLayout(null);
        layOutPanel[l].setBounds(0, 0, screenWidth, screenHeight);

        ImageIcon nextIcon = new ImageIcon("src/icons/next.png");
        JLabel nextLabel = new JLabel(nextIcon);
        nextLabel.setBounds(xPos, yPos, 48, 48);
        nextLabel.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e){
                layOutFrame.remove(layOutPanel[l]);
                layOutFrame.add(layOutPanel[l + 1]);
                //Here the problem occurs, the layOutPanel[] is not recognized.
            }
        });

        layOutPanel[l].add(nextLabel);
   }
   layOutFrame.add(layOutPanel[1]);

2 个答案:

答案 0 :(得分:3)

1)remove/add JComponent(s)新的revalidate(); repaint(); 到可见容器后,您必须致电

pack()

2)也许你想要re_layout容器,然后你也可以调用JLabel#setIcon(myIcon)

3)在那里我看不到在运行时重新创建JPanel的原因,使用

{{1}}

而不是

答案 1 :(得分:2)

改为使用CardLayout,如图所示here

Game view High Scores view


其他说明

  1. JButton使用ActionListener而不是JLabel MouseListener

    1. 前者会响应鼠标和键盘,而后者只会响应鼠标。
    2. 按钮中的图标可以产生与标签中的图标完全相同的“漂亮”(假设它们看起来相同)。但按钮仍然提供额外的功能,可能是“开箱即用”。例如。禁用的图标看起来与通常的图标不同,同时仍然传达相同的一般含义,翻转图标,选定的图标..
  2. 使用布局管理器(具有适当的布局填充和组件边框)而不是null布局和setBounds()