从JTable中的单元格中获取价值

时间:2016-04-10 13:32:55

标签: java swing jtable disabled-control

我到处都看,但似乎无法解决这个问题。我只是想在用户点击它时从我的JTable中提取一个单元格的值。

但是目前我得到-1所以我想双击结果没有检测到行。这是代码:

import java.awt.*;
import java.awt.event.*;
import java.sql.SQLException;
import javax.swing.*;
import javax.swing.table.TableColumn;

public class CardLayoutExample {
    private static JScrollPane scrollPane;

  public static void main(String[] arguments) throws SQLException {

    // main window
    JFrame.setDefaultLookAndFeelDecorated(true);
    JFrame window = new JFrame("CardLayout Example");
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    window.setSize(1500,800); 
    window.getContentPane().setLayout(new BorderLayout());



final CardLayout cardLayout = new CardLayout(); 
final JPanel cardPanel = new JPanel(cardLayout);

JPanel card3 = new JPanel();
cardPanel.add(card3,"All Patients");

String AllPatients="select * from tblPtDetails";
    JTable tablePatientDt = new   JTable(Bquery.buildTableModel(Bquery.resultQuery(AllPatients)));
    tablePatientDt.setEnabled(false);
    tablePatientDt.setPreferredScrollableViewportSize(new Dimension(1200, 400));
    tablePatientDt.setAutoResizeMode( JTable.AUTO_RESIZE_OFF ); 
    tablePatientDt.setRowHeight(30);
    tablePatientDt.setAutoCreateRowSorter(true);
    card3.add(tablePatientDt);
    card3.add(new JScrollPane(tablePatientDt), BorderLayout.CENTER);
    for (int i = 0; i < (tablePatientDt.getColumnCount()); i++) {
        TableColumn columnPatients = null;
        columnPatients = tablePatientDt.getColumnModel().getColumn(i);
        columnPatients.setPreferredWidth(70); //sport column is bigger

    }
    tablePatientDt.addMouseListener(new MouseAdapter() {
           public void mouseClicked(MouseEvent e) {
              if (e.getClickCount() == 2) {
                 int row = tablePatientDt.getSelectedRow();
                 int column = tablePatientDt.getSelectedColumn();
                 //Object val= tablePatientDt.getModel().getValueAt(row, column);
                 //tablePatientDt.getModel().getValueAt(row, column);
                 //return tablePatientDt.getModel().getValueAt(row, column);
                 System.out.println(row);
                 JFrame newFrame = new JFrame();
                 newFrame.setTitle("Detail Screen");
                 newFrame.setVisible(true);
                 }
           }
        });

0 个答案:

没有答案