【问题标题】:Getting single INT value from jTable从 jTable 获取单个 INT 值
【发布时间】:2015-03-11 18:03:19
【问题描述】:

我有一个包含两个值的表:A 和 B 是否可以使用getSelectedRow() 将 A 设为 int?

此时我得到了这个,它找不到变量 A 的符号

 DefaultTableModel tm = (DefaultTableModel)jTabela.getModel();    
 int A = Integer.parseInt( tm.getValueAt(jTabela.A, getSelectedRow()).toString() );

【问题讨论】:

    标签: java swing object int jtable


    【解决方案1】:

    您将行号放入错误的参数中。根据JTable APIgetValueAt(...) 方法采用两个 int 参数,第一个是行索引,第二个是列索引。所以你会想要这样的东西:

    DefaultTableModel tm = (DefaultTableModel)jTabela.getModel(); 
    int row = tm.getSelectedRow();
    if (row == -1) {
       return;
    }
    Object value = jTabela.getValueAt(row, whateverYourColumnIs);
    int intValue = value != null ? Integer.parseInt(value.toString()) : 0;
    

    例如:

    import java.awt.BorderLayout;
    import java.util.Vector;
    
    import javax.swing.*;
    import javax.swing.event.ListSelectionEvent;
    import javax.swing.event.ListSelectionListener;
    import javax.swing.table.DefaultTableModel;
    
    @SuppressWarnings("serial")
    public class TableExample extends JPanel {
       private static final String[] COLUMNS = {"Name", "Value"};
       private DefaultTableModel model = new DefaultTableModel(COLUMNS, 0) {
          public java.lang.Class<?> getColumnClass(int columnIndex) {
             Object value = getValueAt(0, columnIndex);
             if (value == null) {
                return super.getColumnClass(columnIndex);
             } else {
                return value.getClass();
             }
          };
       };
       private JTable table = new JTable(model);
    
       public TableExample() {
          for (int i = 0; i < 10; i++) {
             String name = "Row " + (i + 1);
             int value = (i + 1) * 10;
             Vector<Object> row = new Vector<>();
             row.add(name);
             row.add(value);
             model.addRow(row);
          }
          table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
          table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
    
             @Override
             public void valueChanged(ListSelectionEvent e) {
                if (e.getValueIsAdjusting()) {
                   return;
                }
                int row = table.getSelectedRow();
                if (row == -1) {
                   return;
                }
                Object value = table.getValueAt(row, 1); // numbers are in row 1
                if (value != null) {
                   System.out.println("Selected value: " + value);
                   int intValue = Integer.parseInt(value.toString());
                   // can use value here
                }
             }
          });
    
          setLayout(new BorderLayout());
          add(new JScrollPane(table));
       }
    
       private static void createAndShowGui() {
          JFrame frame = new JFrame("Table Example");
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          frame.getContentPane().add(new TableExample());
          frame.pack();
          frame.setLocationRelativeTo(null);
          frame.setVisible(true);
       }
    
       public static void main(String[] args) {
          SwingUtilities.invokeLater(new Runnable() {
             public void run() {
                createAndShowGui();
             }
          });
       }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多