Dan*_*lin 11 java swing jframe jbutton layout-manager
我刚刚编写了一个简单的代码,我希望在主框架上显示一个文本字段和一个按钮,但是在运行之后,我看到的是文本字段.
如果我在文本字段后面写了按钮的代码,那么只显示按钮.
知道为什么吗?
JFrame mainframe=new JFrame();
mainframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainframe.setBounds(0,0,200,200);
JButton jb=new JButton();
jb.setText("Leech");
mainframe.add(jb);
JTextField link=new JTextField(50);
mainframe.add(link);
mainframe.pack();
mainframe.setVisible(true);
Run Code Online (Sandbox Code Playgroud)
Rob*_*bin 11
a上的默认布局JFrame是a BorderLayout.使用这样的布局调用add方法Container等同于调用add(..., BorderLayout.CENTER).BorderLayout罐的每个位置仅包含一个元素.因此打两个电话
mainframe.add(jb);
mainframe.add(link);
Run Code Online (Sandbox Code Playgroud)
导致包含您添加的最后一个组件的CENTER.如果要避免这种情况,可以将其添加到其他位置,或者FlowLayout通过调用使用其他布局管理器(例如a )JFrame#setLayout
而不是直接将组件添加到JFrame,使用JPanel作为具有所需LayoutManager的容器.
在这里,您可以找到有关布局管理器的几个教程.
基本上在Swing中,LayoutManager负责布置子组件(确定它们的位置和大小),因此您在应用程序中使用的每个容器组件都应配置适当的LayoutManager.
将组件添加到JPanel,然后将该面板添加到JFrame的ContentPane.
JFrame window = new JFrame();
JPanel mainframe = new JPanel();
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setBounds(0,0,200,200);
JButton jb = new JButton();
jb.setText("Leech");
mainframe.add(jb);
JTextField link = new JTextField(50);
mainframe.add(link);
window.getContentPane().add(mainframe);
window.pack();
window.setVisible(true);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41039 次 |
| 最近记录: |