簡體   English   中英

按優先級排序任務

[英]Sorting tasks by priority

如何在JList中按優先級對事物進行排序?
例如,我有多個任務,例如“洗滌,烹飪,洗衣”,我希望能夠使用鼠標(GUI)對它們進行排序,最重要的在頂部。
到目前為止,這是我的代碼:

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class Test extends JFrame implements ActionListener {

    JPanel pLeft = new JPanel();
    JPanel pRight = new JPanel();
    String data[] = {
        "Item 1",
        "Item 2",
        "Item 3",
        "Item 4",
        "Item 5"
    };
    DefaultListModel model = new DefaultListModel();
    JList list = new JList(model);
    JScrollPane listScroller = new JScrollPane(list);
    JButton bUp = new JButton("UP");
    JButton bDown = new JButton("DOWN");

    public Test() {
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.setBounds(300, 100, 300, 200);
        this.setVisible(true);
        this.setLayout(new BorderLayout());
        pRight.setLayout(new BorderLayout());

        this.add(pLeft, BorderLayout.WEST);
        this.add(pRight, BorderLayout.EAST);

        listScroller.setPreferredSize(new Dimension(150, 150));
        pLeft.add(listScroller);

        pRight.add(bUp, BorderLayout.NORTH);
        pRight.add(bDown, BorderLayout.SOUTH);

        bUp.addActionListener(this);
        bDown.addActionListener(this);

        for (int i = 0; i < data.length; i++) {
            model.add(i, data[i]);
        }
    }

    @Override
    public void actionPerformed(ActionEvent ae) {
        Object source = ae.getSource();
        if (source == bUp) {
            model.setElementAt(model.getElementAt(list.getSelectedIndex()), list.getSelectedIndex() + 1);
        }
        if (source == bDown) {
            model.setElementAt(model.getElementAt(list.getSelectedIndex()), list.getSelectedIndex() - 1);
        }

    }

    public static void main(String[] args) {
        Test test = new Test();
    }
}

但是,不僅僅是“更改”其位置,而是將舊項目替換為新項目。

使用JList 有關更多詳細信息,請參見如何使用列表

Drag'n'Drop包是在其中尋找重新排序列表功能的位置。 有關如何使用D'n'D API的信息,請參見Java教程的拖放和數據傳輸課程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM