排序和取消排序列表

时间:2019-02-13 07:26:39

标签: java swing

一段时间以来,我一直在努力进行这种分类,并将希望寄给了你们。

想法是要有一个可以排序和不排序的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);

1 个答案:

答案 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);

          }
      }

  });

}

相关问题