我尝试过多种方式将内部框架添加到现有框架中。我曾尝试使用和不使用JPanel。但没有任何效果,我也不知道为什么。任何人吗?
public class Menu_new extends JFrame{
private BufferedImage background = null;
public Menu_new() {
try {
background = ImageIO.read(new File("pics_1/hallo.jpg"));
} catch (IOException e) {
e.printStackTrace();
}
JDesktopPane desktop = new JDesktopPane();
JInternalFrame inside = new JInternalFrame(("Data"), true, true, true, true);
desktop.add(inside);
inside.setBounds(50, 50, 300, 500);
inside.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
inside.setVisible(true);
JLabel label = new JLabel("Your name");
inside.add(label);
JTextField text = new JTextField(10);
inside.add(text);
Icon icon = new ImageIcon("pics_1/Button.png");
JButton start = new JButton(icon);
start.setBorder(BorderFactory.createEmptyBorder());
inside.add(start);
inside.moveToFront();
this.add(desktop);
}
public void paintComponent(Graphics g) {
g.drawImage(background, 0, 0, this);
}
}
答案 0 :(得分:1)
将组件添加到内部框架的方法是错误的。
默认布局管理器(对于内部框架和JFrame)是BorderLayout
,因此需要您指定要放置组件的位置。 (作为一种特殊情况,如果您只添加一个组件,它似乎可以在不指定约束的情况下工作)。
添加组件的代码应如下所示:
inside.add(label, BorderLayout.PAGE_START);
...
inside.add(text, BorderLayout.CENTER);
...
inside.add(start, BorderLayout.PAGE_END);
作为补充说明,此inside.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
无效,因为JFrame.EXIT_ON_CLOSE
对内部框架无效。