JDesktopPane无法显示添加的组件问题求助
JDesktopPane中JInternalFrame无法显示的问题
我正在学习JDesktopPane以便在工作项目中使用。目前遇到的问题是:我想在JDesktopPane中使用JInternalFrame,该组件在普通JPanel中可正常显示但无法移动,而在JDesktopPane中添加的任何组件都无法显示。
测试代码
主类代码
import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class Internal_FrameShowtst extends JFrame{ Internal_FrameShowtst(){ BorderLayout bl = new BorderLayout(); JDesktopPane p = new JDesktopPane(); JPanel p1 = new JPanel(); JButton b = new JButton("click"); JInternalFrame in = new JInternalFrame("Test"); Internal_Frametst ift = new Internal_Frametst(); b.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { //p1.add(new JLabel("hola")); //in.add(p1); //in.setVisible(true); ift.setVisible(true); } }); p1.add(b); bl.addLayoutComponent(p,BorderLayout.CENTER); //p.add(in); p.add(ift); p.repaint(); setLayout(bl); add(p); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { new Internal_FrameShowtst().setVisible(true); } }); } }
自定义内部框架类代码
import javax.swing.*; public class Internal_Frametst extends JInternalFrame { Internal_Frametst(){ JPanel p = new JPanel(); JLabel label = new JLabel("Halo"); setIconifiable(true); //setIcon(true); setClosable(true); p.add(label); p.setSize(300,300); add(p); //setVisible(true); } }
已尝试的解决方案
- 直接添加组件、添加JPanel、添加内部框架
- 在主类中创建内部框架、自定义内部框架类
- 为普通面板和桌面面板使用布局管理器
以上方法均未解决问题。
内容的提问来源于stack exchange,提问作者Alfredo Aparicio
相关产品推荐
相关产品推荐

