动态添加面板

问题描述 投票:0回答:1

我的形式是JList组件,我希望当用户从JList中选择项目时,在项目名称的现有JLayeredPanel上添加一个新面板。有我的小组:

package forme;

/**
 *
 * @author Administrator
 */

public class PanelProcesses extends javax.swing.JPanel {

    /**
 * Creates new form PanelProcesses
 */
public PanelProcesses() {
    initComponents();
}

PanelProcesses(String name) {
    initComponents();
    jlbProcess.setText(name);
}                    
}

当用户点击JList中的项目时,主窗体中有方法:

 private void jlProcessesMouseClicked(java.awt.event.MouseEvent evt) {

     Process p = (Process) jlProcesses.getSelectedValue();
    System.out.println(p.getName());
    PanelProcesses pp = new PanelProcesses(p.getName());
    pp.setOpaque(true);
   // pp.setVisible(true);
    jlpProcesses.add(pp);
    jlpProcesses.repaint();
    jlpProcesses.setVisible(true);
    //this.setVisible(true);
}

问题是当我点击项目面板没有附加到JLayeredPanel(jlpProcesses)。有人知道我弄错了吗?通过调试模式,我看到新的实例op PanelProcess已生成,属性visible可见。

java jpanel swingx
1个回答
0
投票

我通过设置BoxLayout解决了这个问题,然后Java自动将新面板放在其他面板之下。

© www.soinside.com 2019 - 2024. All rights reserved.