一段时间以来,我一直在努力进行这种分类,并将希望寄给了你们。
想法是要有一个可以排序和不排序的jlist。我还希望功能可以从列表中添加删除项。
我现在正在问这样做的最佳方法是什么?
我一直在玩array.sort。现在它确实可以排序,但是排序之后我无法再将项目添加到列表中。另外,我不知道如何取消排序。
AddButton方法
Button addButton = new Button("Add");
addButton.setForeground(Color.WHITE);
addButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
rightModel.addElement(leftList.getSelectedItem());
sortList.add(leftList.getSelectedItem());
}
});
addButton.setBackground(new Color(241, 57, 83));
addButton.setBounds(48, 366, 85, 22);
panel.add(addButton);
Jlist组件
DefaultListModel rightModel = new DefaultListModel();
JList rightList = new JList(rightModel);
rightList.setBounds(412, 58, 219, 283);
contentPane.add(rightList);
SortButton方法
Button sortButton = new Button("Sort A-Z");
sortButton.setForeground(Color.WHITE);
sortButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ListModel model = rightList.getModel();
String[] strings = new String[rightModel.size()];
for (int i = 0; i < strings.length; i++) {
strings[i] = model.getElementAt(i).toString();
}
Arrays.sort(strings);
rightList.setListData(strings);
}
});
sortButton.setBackground(new Color(241, 57, 83));
sortButton.setBounds(412, 345, 80, 22);
contentPane.add(sortButton);
答案 0 :(得分:0)
这是您需要在桌子上做的事情:
table.getTableHeader().addMouseListener(new MouseAdapter() {
private SortOrder currentOrder = SortOrder.UNSORTED;
private int lastCol = -1;
@Override
public void mouseClicked(MouseEvent e) {
int column = table.getTableHeader().columnAtPoint(e.getPoint());
column = convertColumnIndexToModel(column);
if (column != lastCol) {
currentOrder = SortOrder.UNSORTED;
lastCol = column;
}
RowSorter<?> sorter = getRowSorter();
if (!((TableRowSorter)sorter).isSortable(column)) {
return;
}
List<RowSorter.SortKey> sortKeys = new ArrayList<>();
if (e.getButton() == MouseEvent.BUTTON1) {
switch (currentOrder) {
case UNSORTED:
sortKeys.add(new RowSorter.SortKey(column, currentOrder = SortOrder.ASCENDING));
break;
case ASCENDING:
sortKeys.add(new RowSorter.SortKey(column, currentOrder = SortOrder.DESCENDING));
break;
case DESCENDING:
sortKeys.add(new RowSorter.SortKey(column, currentOrder = SortOrder.UNSORTED));
break;
}
sorter.setSortKeys(sortKeys);
}
}
});
}