找出哪一行被排序以及它是升序还是降序
Find out which row is sorted and if it is ascending or descending
我通过扩展 DefaultTableCellHeaderRenderer
创建了自定义 table header
public class TableHeaderRenderer extends DefaultTableCellHeaderRenderer
{
private JPanel panel;
private JLabel label;
public TableHeaderRenderer()
{
panel = new JPanel();
label = new JLabel(" ");
label.setHorizontalAlignment(JLabel.CENTER);
panel.add(label);
}
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
{
label.setText(String.valueOf(value));
label.setBorder(BorderFactory.createMatteBorder(0, (column == 0 ? 1 : 0), 1, 1, Color.Red));
return panel;
}
}
我想做的是显示在许多其他 table 中显示的已排序列的向上或向下小箭头。
我曾尝试搜索以找出对哪一列进行了排序以及排序顺序,但没有结果。
任何人都可以建议我如何去做吗?
我通过执行以下操作得到了显示的箭头。
我换了
label_.setText(String.valueOf(value));
和
if (table.getRowSorter() != null && table.getRowSorter().getSortKeys() != null && !table.getRowSorter().getSortKeys().isEmpty() &&
table.getRowSorter().getSortKeys().get(0).getColumn() == column)
{
if (table.getRowSorter().getSortKeys().get(0).getSortOrder() == SortOrder.ASCENDING)
{
label_.setText(String.valueOf(value) + " \u25b2");
}
else if (table.getRowSorter().getSortKeys().get(0).getSortOrder() == SortOrder.DESCENDING)
{
label_.setText(String.valueOf(value) + " \u25bc");
}
}
else
{
label_.setText(String.valueOf(value));
}
并且箭头显示正常。
我通过扩展 DefaultTableCellHeaderRenderer
public class TableHeaderRenderer extends DefaultTableCellHeaderRenderer
{
private JPanel panel;
private JLabel label;
public TableHeaderRenderer()
{
panel = new JPanel();
label = new JLabel(" ");
label.setHorizontalAlignment(JLabel.CENTER);
panel.add(label);
}
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
{
label.setText(String.valueOf(value));
label.setBorder(BorderFactory.createMatteBorder(0, (column == 0 ? 1 : 0), 1, 1, Color.Red));
return panel;
}
}
我想做的是显示在许多其他 table 中显示的已排序列的向上或向下小箭头。
我曾尝试搜索以找出对哪一列进行了排序以及排序顺序,但没有结果。
任何人都可以建议我如何去做吗?
我通过执行以下操作得到了显示的箭头。
我换了
label_.setText(String.valueOf(value));
和
if (table.getRowSorter() != null && table.getRowSorter().getSortKeys() != null && !table.getRowSorter().getSortKeys().isEmpty() &&
table.getRowSorter().getSortKeys().get(0).getColumn() == column)
{
if (table.getRowSorter().getSortKeys().get(0).getSortOrder() == SortOrder.ASCENDING)
{
label_.setText(String.valueOf(value) + " \u25b2");
}
else if (table.getRowSorter().getSortKeys().get(0).getSortOrder() == SortOrder.DESCENDING)
{
label_.setText(String.valueOf(value) + " \u25bc");
}
}
else
{
label_.setText(String.valueOf(value));
}
并且箭头显示正常。