我必须做一个必须能够以Jtextfields或Jtextareas的形式显示矩阵的程序,以便用户可以在其中写入(每个Jtextfield的一些矩阵)。 问题是我不知道如何创建一个自定义JPanel,其中包含用户指定的Jtextfields的大小和数量(每次都不同)。 我已经用Google搜索了这个问题,但无济于事。
答案 0 :(得分:1)
看看GridLayout。将网格与几个参数(行和列数)组合在一起非常简单。从JavaDoc中解释:
public static void main (String[] args) {
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(3,2));
panel.add(new JTextField("1"));
panel.add(new JTextField("2"));
panel.add(new JTextField("3"));
panel.add(new JTextField("4"));
panel.add(new JTextField("5"));
panel.add(new JTextField("6"));
将导致JTextFields
编辑:
这里还有一个名为Demo
的小组:
public class Demo {
public static void main(final String[] args) {
if (args.length < 2) {
System.out.print("please enter row and col on commandline");
}
SwingUtilities.invokeLater(new Runnable(){
public void run() {
new Demo(Integer.parseInt(args[0]), Integer.parseInt(args[1]));
}
});
}
public Demo(int colCnt, int rowCnt) {
JFrame frame = new JFrame("Demo");
frame.setSize(600, 600);
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(colCnt,rowCnt));
for (int i =0; i < rowCnt*colCnt; i++) {
panel.add(new JTextField(""+i));
}
frame.setContentPane(panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
答案 1 :(得分:0)
首先,我将构建一个文本字段\区域的二维数组。当您获得用户输入时,您可以初始化数组并“新建”所有小部件。将所有这些添加到父面板\框架后,您可能必须根据用完的尺寸进行一些计算并调整顶级窗口的大小。除此之外,正如已经建议的那样,GridLayout将是直接父组件的不错选择。
希望这有帮助。
答案 2 :(得分:0)
要在运行时更改外观,您需要做的就是用新组件替换内容。 因此,根据您的输入方式,您可以用输入替换akf答案中给出的数字。
panel.setLayout(new GridLayout( rows, columns));
然后显示您在JFrame中添加
的新面板add( panel );
然而,您的任务可能是继承JPanel以显示矩阵的行。我的措辞让你印象深刻。然后是一个完全不同的解决方案。
如果您的唯一目标是实现一个可以编辑值的矩阵,那么JTable是最简单的。将以下内容放在JFrame中
DefaultTableModel data = new DefaultTableModel(3 , 3);// rows, cols
JTable table = new JTable(data);
add(table);
pack();
setVisible(true);
这也可以通过使用data.setRowCount(newValue)简化修改矩阵的高度和宽度。