**已关闭。**此问题需要调试详细信息。它目前不接受答案。
**想要改进此问题?**更新问题,使其位于堆栈溢出主题上。
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();
}
});
}
暂无答案!
目前还没有任何答案,快来回答吧!