是否可以将带有轮廓和绘制内容的JPanel添加到JInternalFrame?换句话说,如下所示:
JFrame frame = new JFrame();
JDesktopPane desktop = new JDesktopPane();
JInternalFrame iframe = new JInternalFrame();
JPanel panel = new JPanel();
iframe.setVisible(true);
iframe.setSize(new Dimension(300, 200));
iframe.add(panel)
desktop.add(iframe);
frame.setContentPane(desktop);
panel.setBorder(BorderFactory.createLineBorder(Color.black));
panel.setBounds(0, 0, 100, 100);
并且在paint函数中(在JFrame类中)有
public void paint(Graphics graphics){
graphics.//insert method
}
并且它仍然显示在JInternalFrame中的面板内。
无论出于何种原因,JPanel和任何绘画功能都没有出现。任何人都可以帮助我理解如何实现这一点或解释我做错了什么?
答案 0 :(得分:1)
并且在paint函数中(在JFrame类中)有
public void paint(Graphics graphics){
graphics.//insert method
}
不要覆盖JFrame的paint()方法。这很少有任何理由。这会导致问题,因为您打破了绘制方法,现在不会绘制子组件。
JInterrnalFrame就像JFrame(或JDialog)。您可以添加任何组件。
iframe.setVisible(true);
iframe.setSize(new Dimension(300, 200));
iframe.add(panel)
此外,在使框架可见之前,将组件添加到框架中。然后布局经理可以完成他们的工作。