Java Swing组件在JTabbedPane中的错误JPanel上显示

Java Swing组件在JTabbedPane中的错误JPanel上显示,java,swing,user-interface,Java,Swing,User Interface,我得到的组件泄漏到我的JTabbedPane中错误的JPanel上。请参阅下文: 我不知道为什么会发生这种事,我以前从未见过 这是发射和第一个福卡斯。如果我切换标签,它就会停止,不再发生 这看起来像是一个绘画问题,但它在完全错误的JPanel上,所以我不明白它是如何做到这一点的 public class RepoPanel extends javax.swing.JPanel { /** * Creates new form RepoPanel */ public RepoPanel()

我得到的组件泄漏到我的JTabbedPane中错误的JPanel上。请参阅下文:

我不知道为什么会发生这种事,我以前从未见过

这是发射和第一个福卡斯。如果我切换标签,它就会停止,不再发生

这看起来像是一个绘画问题,但它在完全错误的JPanel上,所以我不明白它是如何做到这一点的

public class RepoPanel extends javax.swing.JPanel {

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

/**
 * This method is called from within the constructor to initialize the form.
 * WARNING: Do NOT modify this code. The content of this method is always
 * regenerated by the Form Editor.
 */
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

    jScrollPane1 = new javax.swing.JScrollPane();
    FLOWSLIST = new javax.swing.JList<>();
    STARTFLOWS = new javax.swing.JButton();
    DELETEFLOWS = new javax.swing.JButton();
    REFRESHFLOWS = new javax.swing.JButton();

    FLOWSLIST.setModel(new javax.swing.AbstractListModel<String>() {
        String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" };
        public int getSize() { return strings.length; }
        public String getElementAt(int i) { return strings[i]; }
    });
    jScrollPane1.setViewportView(FLOWSLIST);

    STARTFLOWS.setText("Start");

    DELETEFLOWS.setText("Delete");

    REFRESHFLOWS.setText("Refresh");

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
    this.setLayout(layout);
    layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                            .addContainerGap()
                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(jScrollPane1)
                                    .addGroup(layout.createSequentialGroup()
                                            .addComponent(STARTFLOWS)
                                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                            .addComponent(DELETEFLOWS)
                                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                            .addComponent(REFRESHFLOWS)
                                            .addGap(0, 675, Short.MAX_VALUE)))
                            .addContainerGap())
    );
    layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                            .addContainerGap()
                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                    .addComponent(STARTFLOWS)
                                    .addComponent(DELETEFLOWS)
                                    .addComponent(REFRESHFLOWS))
                            .addGap(18, 18, 18)
                            .addComponent(jScrollPane1)
                            .addContainerGap())
    );
}// </editor-fold>


// Variables declaration - do not modify
private javax.swing.JButton DELETEFLOWS;
private javax.swing.JList<String> FLOWSLIST;
private javax.swing.JButton REFRESHFLOWS;
private javax.swing.JButton STARTFLOWS;
private javax.swing.JScrollPane jScrollPane1;
// End of variables declaration
public类repoppanel扩展javax.swing.JPanel{
/**
*创建新表单面板
*/
公共事务委员会(){
初始化组件();
}
/**
*从构造函数中调用此方法来初始化表单。
*警告:不要修改此代码。此方法的内容始终为
*由表单编辑器重新生成。
*/
@抑制警告(“未选中”)
// 
私有组件(){
jScrollPane1=newjavax.swing.JScrollPane();
FLOWSLIST=newjavax.swing.JList();
STARTFLOWS=newjavax.swing.JButton();
DELETEFLOWS=newjavax.swing.JButton();
REFRESHFLOWS=newjavax.swing.JButton();
setModel(新的javax.swing.AbstractListModel(){
字符串[]字符串={“项目1”、“项目2”、“项目3”、“项目4”、“项目5”};
public int getSize(){return strings.length;}
公共字符串getElementAt(inti){返回字符串[i];}
});
jScrollPane1.setViewportView(FLOWSLIST);
STARTFLOWS.setText(“开始”);
DELETEFLOWS.setText(“删除”);
REFRESHFLOWS.setText(“刷新”);
javax.swing.GroupLayout=newjavax.swing.GroupLayout(this);
这个.setLayout(布局);
layout.setHorizontalGroup(
createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1)
.addGroup(layout.createSequentialGroup()
.addComponent(启动流)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(删除流)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(刷新流)
.addGap(0,675,短.MAX_值)
.addContainerGap())
);
layout.setVerticalGroup(
createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(启动流)
.addComponent(删除流)
.addComponent(刷新流))
.addGap(18,18,18)
.addComponent(jScrollPane1)
.addContainerGap())
);
}// 
//变量声明-不修改
私有javax.swing.JButton DELETEFLOWS;
私有javax.swing.JList FLOWSLIST;
私有javax.swing.JButton刷新流;
私有javax.swing.JButton STARTFLOWS;
私有javax.swing.JScrollPane-jScrollPane1;
//变量结束声明
}

公共类RippleUI扩展了javax.swing.JFrame{
公共编辑;
私有repoppanel repoppanel=null;
/**
*创建新表单选项卡UI
*/
公营机构({
repoPanel=新的repoPanel();
初始化组件();
}
/**
*从构造函数中调用此方法来初始化表单。
*警告:不要修改此代码。此方法的内容始终为
*由表单编辑器重新生成。
*/
@抑制警告(“未选中”)
// 
私有组件(){
mxSwingConstants.SHADOW\u COLOR=COLOR.LIGHT\u GRAY;
mxConstants.W3C_SHADOWCOLOR=“#d3”;
编辑器=新的GrapherEditor();
BACKPANEL=newjavax.swing.JPanel();
TABS=newjavax.swing.JTabbedPane();
CONTROL_PANEL=newjavax.swing.JPanel();
JPanel EDITOR=EDITOR.createFrame(新的EditorMenuBar(EDITOR));
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
javax.swing.GroupLayout jPanel1Layout=新建javax.swing.GroupLayout(控制面板);
控制面板设置布局(jPanel1Layout);
setHorizontalGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0,1020,短的最大值);
setVerticalGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0,556,短的最大值);
TABS.addTab(“控制面板”,控制面板);
TABS.addTab(“存储库”,repospanel);
repoPanel.setVisible(true);
TABS.addTab(“编辑器”,编辑器);
javax.swing.GroupLayout BACKPANELLayout=新的javax.swing.GroupLayout(BACKPANEL);
BACKPANEL.setLayout(BACKPANELLayout);
BACKPANELLayout.setHorizontalGroup(
createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(制表符));
BACKPANELLayout.setVerticalGroup(
createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(制表符));
javax.swing.GroupLayout=newjavax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(布局);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(后面板,
javax.swing.GroupLayout.DEFAULT_SIZE,javax.swing.GroupLayout.DEFAULT_SIZE,Short.MAX_VALUE));
layout.setVerticalGroup(
public class RippleUI extends javax.swing.JFrame {

public GraphEditor editor;
private RepoPanel repoPanel = null;

/**
 * Creates new form TabbedUi
 */
public RippleUI() {
    repoPanel = new RepoPanel();
    initComponents();
}

/**
 * This method is called from within the constructor to initialize the form.
 * WARNING: Do NOT modify this code. The content of this method is always
 * regenerated by the Form Editor.
 */
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

    mxSwingConstants.SHADOW_COLOR = Color.LIGHT_GRAY;
    mxConstants.W3C_SHADOWCOLOR = "#D3D3D3";

    editor = new GraphEditor();

    BACKPANEL = new javax.swing.JPanel();
    TABS = new javax.swing.JTabbedPane();
    CONTROL_PANEL = new javax.swing.JPanel();
    JPanel EDITOR = editor.createFrame(new EditorMenuBar(editor));

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(CONTROL_PANEL);
    CONTROL_PANEL.setLayout(jPanel1Layout);
    jPanel1Layout.setHorizontalGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 1020, Short.MAX_VALUE));
    jPanel1Layout.setVerticalGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 556, Short.MAX_VALUE));

    TABS.addTab("Control Panel", CONTROL_PANEL);

    TABS.addTab("Repository", repoPanel);
    repoPanel.setVisible(true);

    TABS.addTab("Editor", EDITOR);

    javax.swing.GroupLayout BACKPANELLayout = new javax.swing.GroupLayout(BACKPANEL);
    BACKPANEL.setLayout(BACKPANELLayout);
    BACKPANELLayout.setHorizontalGroup(
            BACKPANELLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(TABS));
    BACKPANELLayout.setVerticalGroup(
            BACKPANELLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(TABS));

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(BACKPANEL,
                    javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE));
    layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(BACKPANEL,
                    javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE));

    pack();
}// </editor-fold>

/**
 * @param args the command line arguments
 */
public static void main(String args[]) {
    /* Set the Nimbus look and feel */
    // <editor-fold defaultstate="collapsed" desc=" Look and feel setting code
    // (optional) ">
    /*
     * If Nimbus (introduced in Java SE 6) is not available, stay with the default
     * look and feel. For details see
     * http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
     */
    try {
        UIManager.setLookAndFeel(new com.formdev.flatlaf.FlatLightLaf());
    } catch (Exception ex) {
        System.err.println("Failed to initialize LaF");
    }
    // </editor-fold>

    /* Create and display the form */
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new RippleUI().setVisible(true);
        }
    });
}

// Variables declaration - do not modify
public javax.swing.JPanel BACKPANEL;
public javax.swing.JPanel CONTROL_PANEL;
public javax.swing.JTabbedPane TABS;
// End of variables declaration
repoPanel.setVisible(true);