如何解决JComponent 插入非空 JPanel
我有点生气。 我只想将一个 JComponet(包含一个图形)插入到一个必须在它之前包含其他对象的 mainPanel 中。 mainPanel 是一个简单的 JPanel,添加到 JFrame 中,内部有两个面板(一个类似于带有 BoxLayout 的表单面板 - JLabels + JTextField + JButton - 另一个带有包含一组 JLabel 以汇总一些数据的 GridLayout)。 当我单击提交按钮(在第一个面板上)时,我调用了一个创建 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();
}
});
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。