[英]How do I get values of another cell if a checkbox is selected of the corresponding checkbox in jtable?
如果選中了 JTable 中相應 JCheckBox 的復選框,如何獲取其他單元格的值。 我在 JTable 中添加 JCheckbox:
JCheckBox checkBox = new javax.swing.JCheckBox();
jTable1 = new javax.swing.JTable();
jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
"Station", "OperationName", "TliScantime", "StartTime", "Completedtime",
"TliScanTime-StartTime", "StartTime-CompletedTime", "Select"
}
) {
Class[] types = new Class [] {
java.lang.String.class, java.lang.String.class, java.lang.String.class,
java.lang.String.class, java.lang.String.class, java.lang.String.class,
java.lang.String.class, java.lang.Boolean.class
};
public Class getColumnClass(int columnIndex) {
return types [columnIndex];
}
});
jTable1.getColumn("Select").setCellEditor(new DefaultCellEditor(checkBox));
jTable1.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);
jTable1.getColumnModel().getColumn(0).setPreferredWidth(120);
jTable1.getColumnModel().getColumn(1).setPreferredWidth(100);
jTable1.getColumnModel().getColumn(2).setPreferredWidth(80);
jTable1.getColumnModel().getColumn(3).setPreferredWidth(100);
jTable1.getColumnModel().getColumn(4).setPreferredWidth(100);
jTable1.getColumnModel().getColumn(5).setPreferredWidth(180);
jTable1.getColumnModel().getColumn(6).setPreferredWidth(180);
jScrollPane1.setViewportView(jTable1);
現在我想這樣做,當有人單擊 JCheckbox 時,它將從TliScanTime-StartTime
獲取值,所選行的StartTime-CompletedTime
列意味着何時選中 JCheckbox。
並且它會顯示TliScanTime-StartTime
, StartTime-CompletedTime
在兩個分開的 JLables 中的平均時間。 並且值將動態更改,這意味着每次單擊復選框時平均時間都會更改。 我在創建的每一行上添加一個復選框。
對某些編碼示例有什么幫助?
您或許可以調整此處顯示的方法。
對於JTable ,您必須實現TableModelListener 。
例如,
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;
public class TableCheckboxListenerExample {
public static void main(String[] args) {
try {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JDialog.EXIT_ON_CLOSE);
DefaultTableModel model = new DefaultTableModel(new Object[][] {
{Boolean.FALSE, "Row 1"},
{Boolean.TRUE, "Row 2"}},
new String[]{"col1", "col2"}) {
private static final long serialVersionUID = 1L;
@Override
public Class<?> getColumnClass(int columnIndex) {
if (getRowCount() > 0 && getValueAt(0, columnIndex) != null) {
return getValueAt(0, columnIndex).getClass();
}
return super.getColumnClass(columnIndex);
}
};
model.addTableModelListener(new TableModelListener() {
@Override
public void tableChanged(TableModelEvent e) {
int row = e.getFirstRow();
int column = e.getColumn();
TableModel model = (TableModel) e.getSource();
Object data = model.getValueAt(row, column);
if (data instanceof Boolean) {
System.out.println("Value changed in Row: " + row + " Column: " + column + " New Value = " + data);
}
}
});
JTable table = new JTable(model);
frame.add(new JScrollPane(table));
frame.pack();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
private TableCheckboxListenerExample() {
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.