将数据从JTable显示到TextArea

时间:2013-07-04 15:36:20

标签: swing jtable jtextarea

当选择一行(table.getvalue(table.getValueAt(table.getSelectedRow(),'specific column'))到Textarea中时,如何从JTable的“特定列”显示数据。 是否有任何监听器使这项工作?我的意思是在每个选择中必须更新textarea并获取选择行的特定列的值。

1 个答案:

答案 0 :(得分:0)

在表格中添加MouseListener。当用户选择单元格时,只需获取数据并将文本设置为TextField。您可以通过运行以下代码来查看演示。

Table to TextFiled

private void createUI() {
        JFrame frame = new JFrame();

        frame.setLayout(new BorderLayout());

        Object[][] data = {{"a", "b"}, {"c", "d"}, {"e", "f"}};
        Object[] columnNames = {"Col-1", "Col-2"};

        final JTable table = new JTable(data, columnNames);

        JPanel btnPnl = new JPanel(new FlowLayout(FlowLayout.LEFT));
        btnPnl.add(new JLabel("Selected Value: "));
        final JTextField text = new JTextField(10);
        btnPnl.add(text);
        table.getTableHeader().setReorderingAllowed(false);

        table.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {

                if(table.getSelectedRow() != -1 && table.getSelectedColumn() != -1) {
                    String selData = table.getValueAt(table.getSelectedRow(), table.getSelectedColumn()).toString();
                    text.setText(selData);
                }
            }
        });

        frame.add(table.getTableHeader(), BorderLayout.NORTH);
        frame.add(table, BorderLayout.CENTER);
        frame.add(btnPnl, BorderLayout.SOUTH);
        frame.setTitle("Table to TextField Example.");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
    }