【发布时间】:2018-04-09 11:57:17
【问题描述】:
你好!我正在尝试定位 JTextField 数组,就像在图片中一样。我选择创建一个数组是因为我想拥有尽可能多的字段。
现在,我遇到的问题是,当我将 JTextFields 放在面板中时,它会将它们垂直放置。
是否也可以在可滚动面板中插入文本字段?
private int nrFields=4;
private JTextField[] fields = new JTextField[nrFields];
private JPanel panelNew = new JPanel();
private void create() {
for (JTextField auxField: fields) {
panelNew.add(auxField=new JTextField(30));
}
JFrame frame = new JFrame("Frame");
frame.getContentPane().add(this.panelNew);
frame.setSize(800, 800);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
编辑:
我设法通过将文本字段放置在面板中来解决问题,在面板上我将布局设置为 boxlayout。接下来我把这个面板放在一个可滚动的面板中,这个面板放在一个新面板中。
private int nrFields=10;
private JTextField[] fields = new JTextField[nrFields];
private JPanel panelNew = new JPanel();
private JScrollPane newScroll = new JScrollPane();
private JPanel panelMain = new JPanel();
private void create() {
newScroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
panelMain.setLayout(new BoxLayout(panelMain,BoxLayout.Y_AXIS));
for (int i=0;i<nrFields;i++) {
panelMain.add(fields[i]=new JTextField(30));
}
newScroll.setViewportView(panelMain);
panelNew.add(newScroll);
JFrame frame = new JFrame("Frame");
frame.getContentPane().add(this.panelNew);
frame.setSize(800, 800);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
【问题讨论】:
-
请发布一些代码,以便我们知道您尝试了什么。
-
所以要澄清一下,您希望滚动窗格中心的文本字段数量可变,上方的文本区域保持原位,下方的两个按钮位于左侧和右侧?用户应该怎么做才能使 GUI 变大?我猜应该给滚动窗格更多的高度。宽度呢?按钮之间的空间是否应该增加?文本区域和字段是否应该变宽?
-
目前我只希望文本字段位于可滚动窗格中,垂直对齐。
-
提示:添加@Raymo111(或重要的
@)以通知新评论的人。
标签: java swing layout-manager