(Java) JTable行的用户选择

Posted

技术标签:

【中文标题】(Java) JTable行的用户选择【英文标题】:(Java) User selection of JTable row 【发布时间】:2012-12-02 17:16:26 【问题描述】:

我有一个列出从 SQL 查询返回的客户信息的 JTable。如何设置表格以便用户可以通过双击或勾选复选框来选择一行,然后在 JTextField 中填写所选的客户名称?

【问题讨论】:

【参考方案1】:

这里是一个示例代码去fwd

public class PersonTable 

    JTable table;

    public PersonTable() 
        final MyTableModel myTableModel = new MyTableModel();
        myTableModel.fill();

        table = new JTable(myTableModel);
        JFrame frame = new JFrame("Persons");
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        JPanel panel = new JPanel();
        JPanel panel1 = new JPanel();
        final JTextField t1 = new JTextField(10);

        table.getSelectionModel().addListSelectionListener(new ListSelectionListener() 
            @Override
            public void valueChanged(ListSelectionEvent e) 
                int selectedRow = table.getSelectedRow();
                Object valueAt = myTableModel.getValueAt(selectedRow, 0);
                t1.setText((String) valueAt);
            
        );

        panel1.add(new JLabel("Name"), BorderLayout.EAST);
        panel1.add(t1, BorderLayout.WEST);
        panel.add(new JScrollPane(table), BorderLayout.NORTH);
        panel.add(panel1, BorderLayout.SOUTH);
        frame.add(panel);
        frame.pack();
        frame.setVisible(true);
    

    public class MyTableModel extends AbstractTableModel 

        String[] columnName = new String[]"Customer Name", "Phone Number", "Area";
        String[][] valueA = null;

        public void fill() 

            valueA = new String[3][columnName.length];
            for (int i = 0; i < 3; i++) 
                valueA[i][0] = "Name" + i;
                valueA[i][1] = "989481125" + i;
                valueA[i][2] = "Area No" + i;
            
        

        @Override
        public int getRowCount() 
            return valueA.length;
        

        @Override
        public String getColumnName(int column) 
            return columnName[column];
        

        @Override
        public int getColumnCount() 
            return columnName.length;
        

        @Override
        public Object getValueAt(int rowIndex, int columnIndex) 
            return valueA[rowIndex][columnIndex];
        
    

    public static void main(String[] args) 
        new PersonTable();
    

【讨论】:

【参考方案2】:

尝试阅读有关如何使用 JTables 的 Java Swing 教程。基本上,您编写一个用于行选择的侦听器:

How to Use Tables

【讨论】:

错误,对不起,我的错误。我想说他会写一个 Listener。

以上是关于(Java) JTable行的用户选择的主要内容,如果未能解决你的问题,请参考以下文章

java Jtable 如何动态添加button按钮

在旁边的另一个 JTable 上继续 JTable 数据而不是滚动

如何通过SQL将一列JCheckBox添加到JTable? [重复]

如何在JTable中选择行或列?

从 jTable 更新 SQL Server 表

更改我的 JTable 中特定行的颜色