gpt4 book ai didi

java - 将 JTextFields 行添加到 JScrollPane

转载 作者:行者123 更新时间:2023-12-04 20:40:54 25 4
gpt4 key购买 nike

我需要一些关于选择哪些 Swing 组件的建议,以实现以下目标:

我有一个类似于“表格”结构的东西,每次我单击“添加”按钮时,都应该在“表格”上插入另一个“行”。每行由 2 个 JTextField 组成。我在 GridLayout(下图中使用的布局)中遇到的问题是,如果我添加另一行,那么文本字段的高度将缩短,我不希望那样(右图),我想要为每一行保留相同的高度。

我想要的是让额外的行出现在最后一行的下方,这样我就可以使用 JScrollPane 并滚动查看它。

enter image description here

我应该使用其他布局而不是 GridLayout 吗?也许是 AbsoluteLayout 甚至使用 Table 组件?

谢谢。

最佳答案

我会使用 JTable 并将行高设置为您想要的任何值。例如:

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;

public class TableEg {
private static final int ROW_HEIGHT = 40;
private static final String[] TABLE_COLUMNS = {"Foo", "Bar"};

private static void createAndShowGui() {
final DefaultTableModel tableModel = new DefaultTableModel(TABLE_COLUMNS, 2);
JTable table = new JTable(tableModel );
table.setRowHeight(ROW_HEIGHT);
JScrollPane scrollpane = new JScrollPane(table);

JButton addRowBtn = new JButton(new AbstractAction("Add Row") {

@Override
public void actionPerformed(ActionEvent arg0) {
tableModel.addRow(new String[]{"", ""});
}
});
JPanel btnPanel = new JPanel();
btnPanel.add(addRowBtn);

JFrame frame = new JFrame("TableEg");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(scrollpane, BorderLayout.CENTER);
frame.getContentPane().add(btnPanel, BorderLayout.PAGE_END);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}

关于java - 将 JTextFields 行添加到 JScrollPane,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11286888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com