初始化后如何更改JTable?

时间:2016-12-15 10:05:07

标签: java swing user-interface

我对Java中的Swing开发很新。在初始化完成后,我需要一些帮助,用一些值填充一个表。

someClass extends JPanel{
private JLabel something;
static private JTable Table;
private JPanel temp;

someClass(){
    setLayout(new BorderLayout());
    selectSong = new JLabel("some text");
    temp = new JPanel();
    temp.setLayout(new FlowLayout());
    temp.add(something);
    Table = new JTable();
    //Table.setVisible(false);
    add(temp, BorderLayout.NORTH);

    add(new JScrollPane(Table), BorderLayout.CENTER);

}
static void populateTable(ArrayList<String> list){
    DefaultTableModel dtm = new DefaultTableModel();
    dtm.addColumn("title", list.toArray());
    Table = new JTable(dtm);
    Table.setVisible(true);
    new someClass().add(new JScrollPane(Table), BorderLayout.CENTER);
}
}

这个名为someClass的类是JPanel的子类。我正在使用此对象并将其附加到主框架(此处未显示)。根据这个,最初用空表创建一个GUI表单,在完成一些操作后,我调用populateTable函数,我希望这个更改表的值,使其有一列(名为title)并包含arraylist后续行中的元素。

3 个答案:

答案 0 :(得分:2)

假设您调用了JTable'表':

static void populateTable(ArrayList<String> list){
        DefaultTableModel dtm = new DefaultTableModel();
        dtm.addColumn("title", list.toArray());
        table.setModel(dtm);
    }
    }

您也不应该在该方法中调用table.setVisible(true);,因为它与填充表格无关。

其他人建议

修改:最好使用DefaultTableModel的类属性。

答案 1 :(得分:1)

someClass extends JPanel{
    private JLabel something;
    static private JTable Table;
    private JPanel temp;
    private DefaultTableModel dtm;

    someClass(){
        setLayout(new BorderLayout());
        selectSong = new JLabel("some text");
        temp = new JPanel();
        temp.setLayout(new FlowLayout());
        temp.add(something);
        dtm= new DefaultTableModel();
        Table = new JTable(dtm);
        add(temp, BorderLayout.NORTH);

        add(new JScrollPane(Table), BorderLayout.CENTER);

    }
    static void populateTable(ArrayList<String> list){
        dtm.addColumn("title", list.toArray());
    }
    }

这就是你的课程应该是这样的

答案 2 :(得分:0)