您好我正在使用JFrame
创建我的ui,这是我的代码
private static void prepareUI(JPanel jPanel) {
jPanel.setLayout(new BoxLayout(jPanel, BoxLayout.Y_AXIS));
jPanel.add(new JLabel("Enter Full Text Below"));
{
textInput = new JTextArea(5, 1);
JScrollPane jScrollPane = new JScrollPane(textInput);
jPanel.add(jScrollPane);
}
{
JSeparator jSeparator = new JSeparator(SwingConstants.HORIZONTAL);
jSeparator.setMaximumSize(new Dimension(Integer.MAX_VALUE, 1));
jPanel.add(jSeparator);
}
jPanel.add(new JLabel("Or Enter URL And Press Enter"));
//url
{
urlInput = new JTextField(1);
jPanel.add(urlInput);
}
{
JSeparator jSeparator = new JSeparator(SwingConstants.HORIZONTAL);
jSeparator.setMaximumSize(new Dimension(Integer.MAX_VALUE, 1));
jPanel.add(jSeparator);
}
jPanel.add(new JLabel("Or"));
{
JPanel jPanel1 = new JPanel();
jPanel1.setLayout(new BoxLayout(jPanel1,BoxLayout.X_AXIS));
JButton jButton = new JButton("Browse");
JTextField jTextField = new JTextField(1);
jPanel1.add(jTextField);
jPanel1.add(jButton);
jPanel.add(jPanel1);
}
{
JButton jButton = new JButton("Find Matches");
jPanel.add(jButton, BorderLayout.CENTER);
}
{
JButton jButton = new JButton("Matches");
jPanel.add(jButton, BorderLayout.CENTER);
}
}
但输出不是我预期的
您可以看到第二个JTextField
新浏览JButton
非常小而且没有占据整个父级,JLabel
也不在左侧。我该如何解决?
修改:我删除了setMaximumSize(new Dimension(Integer.MAX_VALUE, 1))
并将列大小1添加到所有JTextField
,但它尚未修复。 JTextField
超过1行高,JLabel
不在左侧。
答案 0 :(得分:1)
jTextField.setMaximumSize(new Dimension(Integer.MAX_VALUE, 1));
请勿尝试手动设置尺寸限制。我猜想组件不能以1的高度显示。
要建议JTextField的大小,您可以使用:
JTextField textField = new JTextField(10);
然后文本字段的大小将保持为10“W”字符。
编辑:
此外,在创建JTextArea时,您使用:
JTextArea textArea = new JTextArea(5, 20);
建议您需要的行/列数。然后组件将计算其大小。
答案 1 :(得分:0)
最好为JPanel使用不同的布局。对于您的设计,您可以使用GridBagLayout
。它具有响应性,可以更轻松地管理您的小部件。