java jtable 排序_java-JTable仅以编程方式排序

我有一个可排序的JTable(通过在初始化时调用setAutoCreateRowSorter(true)使其可排序).我以编程方式对该表进行排序,并且希望禁用表头的默认事件处理,以便只能以编程方式对该表进行排序.如何实现呢?

代码的工作部分将是:

public class SortTable extends JDialog {

private JTable table;

DefaultRowSorter sorter;

public SortTable() {

JScrollPane scrollPane = new JScrollPane();

setBounds(0, 0, 300, 200);

getContentPane().setLayout(new BorderLayout());

getContentPane().add(scrollPane, BorderLayout.CENTER);

//-------most important stuff-------------------

table = new JTable();

table.setAutoCreateRowSorter(true); //enabling sorting

table.setModel(createModel());

sorter = (DefaultRowSorter)table.getRowSorter(); //store sorter to sort programatically later on

//-----------------------------------------------

scrollPane.setViewportView(table);

JPanel buttonPane = new JPanel();

buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));

getContentPane().add(buttonPane, BorderLayout.SOUTH);

buttonPane.add(new JButton(getSortAction()));

}

private AbstractAction getSortAction() {

return new AbstractAction("Sort") {

@Override

public void actionPerformed(ActionEvent e) {

sorter.setSortKeys(Arrays.asList(new SortKey(0,SortOrder.ASCENDING)));

sorter.sort(); //sorting programatically

}

};

}

private DefaultTableModel createModel() {

return new DefaultTableModel(

new Object[][] {

{"1", "3"},

{"5", "2"},

{"4", null},

},

new String[] {

"A", "B"

}

);

}

}

此示例是一个JDialog,其中包含带有Sort按钮的JTable.按下该按钮将导致A列升序排列.但是,按钮不是对表格进行排序的唯一方法-我们只需单击表格标题即可更改排序.我的问题是如何使按钮成为排序表格的唯一方法.

知道如何摆脱更改排序时出现的箭头也将非常高兴.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值