【发布时间】:2015-08-02 18:15:11
【问题描述】:
我正在制作的第一个 java GUI 应用程序。
基本上,我想要实现的目标看起来很简单。 这是一个简单的水平布局,首先包含一个简单的 JLabel、一个 JTextArea、JButton 和至少另一个 JLabel。
澄清一下,我不希望文本区域和底部标签具有固定大小,而是填充它们的空间,并且在其他组件之间也有一些小填充。
这是我目前制作的代码,如上图所示,这还不是我想要实现的目标:
public class QueryPanel extends JPanel{
private JLabel headerLabel;
private String defaultString = "Insert query here...";
private boolean isTextFieldClicked = false;
private JTextArea queryTextArea;
private JScrollPane queryScrollPane;
private JButton executeQueryButton;
private JTextArea resultTextArea;
private JScrollPane resultScrollPane;
public QueryPanel(String headerText){
GridBagLayout gridLayout = new GridBagLayout();
setLayout(gridLayout);
GridBagConstraints constraints = new GridBagConstraints();
constraints.fill = GridBagConstraints.HORIZONTAL;
headerLabel = new JLabel();
headerLabel.setText(headerText);
constraints.gridy = 0;
add(headerLabel, constraints);
queryTextArea = new JTextArea(defaultString);
queryScrollPane = new JScrollPane(queryTextArea);
constraints = new GridBagConstraints();
constraints.fill = GridBagConstraints.HORIZONTAL;
constraints.weighty = 1.0;
constraints.weightx = 1.0;
constraints.gridy = 1;
add(queryScrollPane, constraints);
executeQueryButton = new JButton("Execute Query");
constraints = new GridBagConstraints();
constraints.fill = GridBagConstraints.HORIZONTAL;
constraints.gridy = 2;
add(executeQueryButton, constraints);
resultTextArea = new JTextArea();
resultTextArea.setEditable(false);
resultScrollPane = new JScrollPane(resultTextArea);
constraints = new GridBagConstraints();
constraints.fill = GridBagConstraints.HORIZONTAL;
constraints.weighty = 1.0;
constraints.weightx = 1.0;
constraints.gridy = 3;
add(resultScrollPane, constraints);
}
}
附:关于底部组件,想知道将静态结果显示为大标签而不是不可编辑的文本区域是否更好......找不到哪个更“正确”。
【问题讨论】:
-
resultTextArea = new JTextArea();可以通过设置预期文本的列号和行号来建议首选大小。这可以在构造函数中完成。一般提示: 1) 为了尽快获得更好的帮助,请发帖 minimal reproducible example 或 Short, Self Contained, Correct Example。 2) 以最小尺寸提供 ASCII 艺术或 GUI 的预期布局的简单绘图,如果可调整大小,则具有更大的宽度和高度。
标签: java swing layout layout-manager gridbaglayout