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

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

【问题讨论】:

    标签: java swing jdbc jtable


    【解决方案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。
      猜你喜欢
      • 1970-01-01
      • 2018-10-30
      • 2023-03-24
      • 1970-01-01
      • 2012-03-16
      • 2011-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多