(Java)用户选择JTable行

(Java)用户选择JTable行,java,swing,jdbc,jtable,Java,Swing,Jdbc,Jtable,我有一个JTable,它列出了从SQL查询返回的客户信息。如何设置表,以便用户可以通过双击或勾选复选框来选择一行,然后用所选的客户名称填写JTextField?尝试阅读Java Swing教程中关于如何使用JTables的内容。基本上,您可以为行选择编写侦听器: 尝试阅读关于如何使用JTables的Java Swing教程。基本上,您可以为行选择编写侦听器: 这里有一个示例代码,可以继续前进 public class PersonTable { JTable table; p

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

尝试阅读Java Swing教程中关于如何使用JTables的内容。基本上,您可以为行选择编写侦听器:


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


这里有一个示例代码,可以继续前进

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();
    }
}
公共类PersonTable{
JTable表;
公众人物{
最终MyTableModel MyTableModel=新MyTableModel();
myTableModel.fill();
table=新的JTable(myTableModel);
JFrame=新JFrame(“人员”);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
JPanel面板=新的JPanel();
JPanel panel1=新的JPanel();
最终JTextField t1=新的JTextField(10);
table.getSelectionModel().addListSelectionListener(新ListSelectionListener()){
@凌驾
public void值已更改(ListSelectionEvent e){
int selectedRow=table.getSelectedRow();
Object valueAt=myTableModel.getValueAt(selectedRow,0);
t1.setText((字符串)值at);
}
});
面板1.添加(新JLabel(“名称”),BorderLayout.EAST);
面板1.添加(t1,边界布局。西部);
添加(新的JScrollPane(表),BorderLayout.NORTH);
面板。添加(面板1,边界布局。南部);
框架。添加(面板);
frame.pack();
frame.setVisible(true);
}
公共类MyTableModel扩展了AbstractTableModel{
字符串[]columnName=新字符串[]{“客户名称”、“电话号码”、“区域”};
字符串[][]valueA=null;
填空{
valueA=新字符串[3][columnName.length];
对于(int i=0;i<3;i++){
valueA[i][0]=“Name”+i;
价值a[i][1]=“989481125”+i;
valueA[i][2]=“区域编号”+i;
}
}
@凌驾
public int getRowCount(){
返回值a.length;
}
@凌驾
公共字符串getColumnName(int列){
返回columnName[列];
}
@凌驾
public int getColumnCount(){
返回columnName.length;
}
@凌驾
公共对象getValueAt(int行索引、int列索引){
返回值A[rowIndex][columnIndex];
}
}
公共静态void main(字符串[]args){
新的PersonTable();
}
}

这里有一个示例代码要发送

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();
    }
}
公共类PersonTable{
JTable表;
公众人物{
最终MyTableModel MyTableModel=新MyTableModel();
myTableModel.fill();
table=新的JTable(myTableModel);
JFrame=新JFrame(“人员”);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
JPanel面板=新的JPanel();
JPanel panel1=新的JPanel();
最终JTextField t1=新的JTextField(10);
table.getSelectionModel().addListSelectionListener(新ListSelectionListener()){
@凌驾
public void值已更改(ListSelectionEvent e){
int selectedRow=table.getSelectedRow();
Object valueAt=myTableModel.getValueAt(selectedRow,0);
t1.setText((字符串)值at);
}
});
面板1.添加(新JLabel(“名称”),BorderLayout.EAST);
面板1.添加(t1,边界布局。西部);
添加(新的JScrollPane(表),BorderLayout.NORTH);
面板。添加(面板1,边界布局。南部);
框架。添加(面板);
frame.pack();
frame.setVisible(true);
}
公共类MyTableModel扩展了AbstractTableModel{
字符串[]columnName=新字符串[]{“客户名称”、“电话号码”、“区域”};
字符串[][]valueA=null;
填空{
valueA=新字符串[3][columnName.length];
对于(int i=0;i<3;i++){
valueA[i][0]=“Name”+i;
价值a[i][1]=“989481125”+i;
valueA[i][2]=“区域编号”+i;
}
}
@凌驾
public int getRowCount(){
返回值a.length;
}
@凌驾
公共字符串getColumnName(int列){
返回columnName[列];
}
@凌驾
public int getColumnCount(){
返回columnName.length;
}
@凌驾
公共对象getValueAt(int行索引、int列索引){
返回值A[rowIndex][columnIndex];
}
}
公共静态void main(字符串[]args){
新的PersonTable();
}
}

呃,对不起,我弄错了。我想说他会写一个听众。呃,对不起,我错了。我想说的是,他将写一个听众。