0
A
回答
2
你的TableModel可以retun行數和新/加可能是最後一次使用convertRowIndexToView您可以在TableView中得到行,然後傳遞給changeSelection 公共無效changeSelection(INT的rowIndex,INT columnIndex,布爾切換,布爾延長)
編輯:例如(對於享受harcoded numbersOfRows - 3代替正確numbersOfRows - 1):
import java.awt.*;
import java.awt.event.ActionEvent;
import javax.swing.*;
import javax.swing.UIManager.LookAndFeelInfo;
import javax.swing.event.*;
import javax.swing.table.*;
public class TestTableRowTable {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
// UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
if (info.getName().equals("Nimbus")) {
UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (Exception e1) {
e1.printStackTrace();
}
final JTable table = new JTable(10, 6);
for (int i = 0; i < table.getRowCount(); i++) {
table.setValueAt(i, i, 0);
}
final TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(table.getModel());
table.setRowSorter(sorter);
final AbstractTableModel model = new AbstractTableModel() {
private static final long serialVersionUID = 1L;
@Override
public int getColumnCount() {
return 1;
}
@Override
public Object getValueAt(int row, int column) {
return table.convertRowIndexToModel(row);
}
@Override
public int getRowCount() {
return table.getRowCount();
}
};
JTable headerTable = new JTable(model);
headerTable.setShowGrid(false);
headerTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
headerTable.setPreferredScrollableViewportSize(new Dimension(30, 0));
headerTable.getColumnModel().getColumn(0).setPreferredWidth(30);
headerTable.getColumnModel().getColumn(0).setCellRenderer(new TableCellRenderer() {
@Override
public Component getTableCellRendererComponent(JTable x, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
boolean selected = table.getSelectionModel().isSelectedIndex(row);
Component component = table.getTableHeader().getDefaultRenderer().getTableCellRendererComponent(table, value, false, false, -1, -2);
((JLabel) component).setHorizontalAlignment(JLabel.CENTER);
if (selected) {
component.setFont(component.getFont().deriveFont(Font.BOLD));
} else {
component.setFont(component.getFont().deriveFont(Font.PLAIN));
}
return component;
}
});
table.getRowSorter().addRowSorterListener(
new RowSorterListener() {
@Override
public void sorterChanged(RowSorterEvent e) {
model.fireTableDataChanged();
}
});
table.getSelectionModel().addListSelectionListener(
new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
model.fireTableRowsUpdated(0, model.getRowCount() - 1);
}
});
JScrollPane pane = new JScrollPane(table);
pane.setRowHeaderView(headerTable);
JFrame frame = new JFrame("Test");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.getContentPane().add(pane);
frame.getContentPane().add(new JButton(new AbstractAction("Toggle filter") {
private static final long serialVersionUID = 1L;
private RowFilter<TableModel, Object> filter = new RowFilter<TableModel, Object>() {
@Override
public boolean include(javax.swing.RowFilter.Entry<? extends TableModel, ? extends Object> entry) {
return ((Number) entry.getValue(0)).intValue() % 2 == 0;
//return ((String) entry.getValue(0)).length()>0 ;
//return ((Date) entry.getValue(0)).getTime()< ;
}
};
@Override
public void actionPerformed(ActionEvent e) {
if (sorter.getRowFilter() != null) {
sorter.setRowFilter(null);
TableModel tblModel = table.getModel();
int numbersOfRows = 0;
numbersOfRows = tblModel.getRowCount();
int lastRow = 0;
lastRow = table.convertRowIndexToView(numbersOfRows - 3);
table.changeSelection(lastRow, 0, false, false);
} else {
sorter.setRowFilter(filter);
}
}
}), BorderLayout.PAGE_END);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
private TestTableRowTable() {
}
}
0
這是很難回答,因爲你沒有提供任何代碼,但是,如果你使用的JTable的一些模型,你可以寫一些適配器插入的方法,我的意思是public void insertRow(int row, Vector rowData)
。這裏是現在的行數,使用這個數字你可以選擇行。你知道如何選擇行嗎?
相關問題
- 1. 在jTable中自動插入新行,同時在最後一行輸入數據
- 2. 選擇最後插入的十行
- 3. 行排序後在JTable中選擇行
- 4. PHP MYSQL選擇最後插入的ID
- 5. JTable行選擇
- 6. 如何在JTable中選擇一行?
- 7. TableModel更新後的JTable行選擇
- 8. 火鳥性能:更新/選擇verus插入/選擇最後的
- 9. JTable中的自動篩選
- 10. 如何在HSQL中返回最後插入的(自動遞增的)行ID?
- 11. 如何選擇mysql_query的最後一行?
- 12. 選擇每PARENT_ID只有最後插入的行
- 13. 行選擇不與JTable中
- 14. 觸發後插入選擇最小值(COUNT)插入ID
- 15. 在Oracle中插入INSERT後選擇最後一個ID
- 16. 如何在Oracle中的表中選擇最後插入的記錄
- 17. 如何選擇表中的最後一個插入的記錄SQL中
- 18. 插入選擇自動遞增錯誤
- 19. 如何讓最後添加的項目到checkedlistbox自動選擇
- 20. 從連接插入並選擇最後一行
- 21. 範圍 - 如何自動選擇新插入的節點?
- 22. ButtonCellEditor不選擇Jtable的行
- 23. 如何執行插入到選擇
- 24. 最後插入行的自動編號值 - MS Access/VBA
- 25. 在最後一行添加自動增量的JTable中的行ID
- 26. 如何選擇JTable中的其他行,如果其中一行被選中?
- 27. Java:如果行被AbstractTableModel插入,如何將行(數據)插入到JTable中
- 28. 着色JTable行動態,移動行上的行選擇問題
- 29. 從另一個JTable的行選擇行Jtable中顯示數據
- 30. 如何從行中選擇最後24小時的行偏移