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小时的行偏移