以下代码片段允许我使用BorderLayout Manager在JPanel上放置JTextfield和2个JButton.
JPanel strPanel = new ButtonPanel();
strPanel.setLayout(new BorderLayout());
setBorder( new EmptyBorder( 3, 3, 3, 3 ) );
strfield = new JTextField("",70);
strPanel.add("West", strfield);
strPanel.add("Center", btnCopy);
strPanel.add("East", btnPaste);
add("North", strPanel);
Run Code Online (Sandbox Code Playgroud)
这是一个截图

然而,踢球者是当我调整JFrame的大小时,"复制"按钮被放大但我希望放大JTextField,而复制和粘贴按钮保持相同的大小.这是一个更新的截图:

为了尝试修复它,我下载了NetBeans等,并使用GUI设计器进行了游戏,但即使使用不同的布局管理器,我也无法解决它.
有人可以解释一下吗?谢谢
BorderLayout因为它为CENTER组件提供了所有剩余的空间,所以不会为此任务进行切割.如果您可以将布局更改为GridBagLayout简单,则可以将最左侧的组件全部留在空间上.
public static void main(String[] args) {
JFrame frame = new JFrame("Test");
frame.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.BOTH;
gbc.weightx = 1;
frame.add(new JTextArea("Hello World!"), gbc);
gbc.weightx = 0;
frame.add(new JButton("Copy"), gbc);
frame.add(new JButton("Paste"), gbc);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
Run Code Online (Sandbox Code Playgroud)
如果您真的想要使用BorderLayout,可以将按钮组合在一起并将它们添加到东部,将文本字段添加到中心,执行以下操作:
public static void main(String[] args) {
JFrame frame = new JFrame("Test");
frame.add(new JTextArea("Hello World!"), BorderLayout.CENTER);
frame.add(new JPanel(new GridLayout(1, 0)) {{
add(new JButton("Copy"));
add(new JButton("Paste"));
}}, BorderLayout.EAST);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
132 次 |
| 最近记录: |