jcomponent转换为非空的jpanale

avkwfej4  于 2021-09-13  发布在  Java
关注(0)|答案(0)|浏览(194)

**已关闭。**此问题需要调试详细信息。它目前不接受答案。
**想要改进此问题?**更新问题,使其位于堆栈溢出主题上。

3小时前关门了。
改进这个问题
我有点疯了。我只想将一个jcomponet(包含一个图形)插入到一个主面板中,该主面板之前必须包含其他对象。mainpanel是一个简单的jpanel,添加到jframe中,内部有两个面板(一个类似于带有boxlayout-jlabels+jtextfield+jbutton的表单面板,另一个带有gridlayout,其中包含一组jlabel以汇总一些数据)。当我单击提交按钮(在第一个面板上)时,我调用了一个创建jcomponent objectcomp的方法(取决于插入的数据),我将其设置为可见,并将其添加到mainpanel。它没有显示。我还试图:
创建另一个包含jcomponent、graphpanel和borderlayout的面板,并将其添加到mainpanel。
将显式大小设置为graphpanel和objectcomp
将objectcomp直接添加到mainpanel并将其设置为显式大小
添加所有面板/对象后,调用repaint()
什么都不管用。我看到前两个面板,但objectcomp从未出现。唯一有效的方法是将objectcomp直接添加到jframe,但通过这种方式,我释放了所有其他对象,我需要查看它们。

/**
 */
public class Draw extends JComponent {
// graphic
}

/**
 */
public class MainClass extends JFrame {
/**
 * main panel
 */
private JPanel mainPanel = new JPanel();
/**
 * graphic panel
 */
private JPanel graphPanel = new JPanel();

/**
 * 
 */
public MainClass() {
    super();
    // maximize
    setExtendedState(getExtendedState() | JFrame.MAXIMIZED_BOTH);

    // create form panel and add it to mainPanel
    createFormPanel();
    // create summary panel  and add it to mainPanel
    createSummaryPanel();

    setContentPane(mainPanel);
    setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    pack();
}

/**
 * create JComponent
 */
private void createJComp() {

    draw = new Draw(data);
    draw.setVisible(true);
    graphPanel.setLayout(new BorderLayout());
    graphPanel.add(draw, BorderLayout.SOUTH);
    graphPanel.setSize(500, 500);
    draw.setSize(500, 500);
    graphPanel.setBackground(Color.BLUE);
    mainPanel.add(graphPanel);
    graphPanel.setVisible(true);
    SwingUtilities.invokeLater(new Runnable(){
        public void run()
        {
            validate();
            draw.repaint();
            graphPanel.repaint();
            repaint();
        }
    }); 
}

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题