Java 使JList在单击时的行为与在ctrl+上的行为相同;点击
我正在寻找一种方法,使Java 使JList在单击时的行为与在ctrl+上的行为相同;点击,java,swing,jlist,Java,Swing,Jlist,我正在寻找一种方法,使JList始终切换所单击项目的选择,而不取消选择其他项目,与ctrl-click的工作方式相同 这似乎是正确的方法,但我不知道那里需要配置什么 如何使JList在单击时的行为与在按住ctrl键单击时的行为相同?也许此代码可以正确执行此操作 import java.awt.Component; import java.awt.event.InputEvent; import java.awt.event.MouseEvent; import javax.swing.*; p
JList
始终切换所单击项目的选择,而不取消选择其他项目,与ctrl-click的工作方式相同
这似乎是正确的方法,但我不知道那里需要配置什么
如何使JList在单击时的行为与在按住ctrl键单击时的行为相同?也许此代码可以正确执行此操作
import java.awt.Component;
import java.awt.event.InputEvent;
import java.awt.event.MouseEvent;
import javax.swing.*;
public class Ctrl_Down_JList {
private static void createAndShowUI() {
String[] items = {"Sun", "Mon", "Tues", "Wed", "Thurs", "Fri", "Sat"};
JList myJList = new JList(items) {
private static final long serialVersionUID = 1L;
@Override
protected void processMouseEvent(MouseEvent e) {
int modifiers = e.getModifiers() | InputEvent.CTRL_MASK;
// change the modifiers to believe that control key is down
int modifiersEx = e.getModifiersEx() | InputEvent.CTRL_MASK;
// can I use this anywhere? I don't see how to change the modifiersEx of the MouseEvent
MouseEvent myME = new MouseEvent((Component) e.getSource(), e.getID(), e.getWhen(), modifiers, e.getX(),
e.getY(), e.getXOnScreen(), e.getYOnScreen(), e.getClickCount(), e.isPopupTrigger(), e.getButton());
super.processMouseEvent(myME);
}
};
JFrame frame = new JFrame("Ctrl_Down_JList");
frame.add(new JScrollPane(myJList));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
createAndShowUI();
}
});
}
您可以使用以下
列表选择模型
:
list.setSelectionModel(new DefaultListSelectionModel(){
@Override
public void setSelectionInterval(int start, int end) {
if (start != end) {
super.setSelectionInterval(start, end);
} else if (isSelectedIndex(start)) {
removeSelectionInterval(start, end);
} else {
addSelectionInterval(start, end);
}
}
});
您必须创建自己的ListSelectionModel。试试看
list.setSelectionModel(new DefaultListSelectionModel()
{
@Override
public void setSelectionInterval(int index0, int index1)
{
if(list.isSelectedIndex(index0))
{
list.removeSelectionInterval(index0, index1);
}
else
{
list.addSelectionInterval(index0, index1);
}
}
});
这是我经常发现的一段代码,但它只会在单击所选项目时添加切换功能谢谢!!我已经在网上搜索了一段时间,这本书可能有用。如果我需要假钥匙,我会记住这一点:)请参阅我对相关问题的回答: