Swing动态JTable创建



我想根据输入动态创建表。如果输入为5,将有5个JTable,然后我应该能够唯一地识别这5个表,以便之后我可以单独处理这5个表。

我正在做

table=new Jtable()

,但是我想要

table1=new Jtable(),table2=new Jtable(),table3=new Jtable()
从而自动生成

等。输入上限为18.

我该怎么做?

试试这样做(未测试):

ArrayList<JTable> tables = new ArrayList<JTables>();
for(int i=0; i<5; i++) {
  tables.add(new JTabel());
}

这个呢:

ArrayList<JTable> tables = new ArrayList<JTable>();
for (int i = 0; i < 18; i++) {
    tables.add(new JTable());
}
private JComponent createGUI() {
    JPanel pnl = new JPanel();
    for (JTable jTable : tables) {
        pnl.add(jTable);
    }
    return pnl;
}

更新示例:

public class Display extends JFrame {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new Display().setVisible(true);
            }
        });
    }
    private ArrayList<JTable> tables = new ArrayList<JTable>(){{
        for (int i = 0; i < 18; i++) {
            add(new JTable(new DefaultTableModel(3,3)));
        }
    }};
    public Display() {
        super("Title");
        this.setSize(832, 594);
        this.setLocationRelativeTo(null); // to center frame on screen
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        JPanel content = new JPanel();
        content.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
        content.setLayout(new BoxLayout(content, BoxLayout.PAGE_AXIS));
        for (JTable table : tables) {
            content.add( createGUI(table) );
        }
        this.getContentPane().setLayout(new BorderLayout());
        this.getContentPane().add(content, BorderLayout.CENTER);
    }
    private JPanel createGUI(JTable table) {
        JPanel pnl = new JPanel(new BorderLayout());
        pnl.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
        pnl.add(table.getTableHeader(), BorderLayout.NORTH);
        pnl.add(table, BorderLayout.CENTER);
        return pnl;
    }
}

最新更新