java - 在 JList 中有一个预选选项

标签 java swing user-interface jlist

背景:

我正在为一家邮轮公司创建 GUI。系统的用户可以执行以下任务:使用 GUI 添加新的船只、甲板、船舱和游轮。

问题:

在我的系统中,我添加了复制游轮的功能,因此一旦选择了要复制的游轮,就会打开一个单独的框架,其中预先填充了从中复制的游轮的数据。但是,打开的单独框架(我们称之为“重复巡航框架”),该框架也有一个 JList,它将一艘船分配给巡航。

问题:

我需要重复的巡航框架中的 JList 才能让分配给它的船在 JList 中突出显示。

例如,如果我有以下数据的游轮:

SHIP NAME: Pegasus
START PORT: Oban
END PORT: Teran
ASSIGNED TO SHIP: Scottie

单击“复制”按钮后,我希望复制巡航框架中的 JList 已经具有:ASSIGNED TO SHIP:Scottie 突出显示。

代码片段:

这是 JList,它包含有关 Ships(一组船舶)的数据:

JScrollPane scrollPane2 = new JScrollPane();
shipList = new JList(fleet.getShips().toArray());
scrollPane2.setViewportView(shipList);
shipList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
shipList.setVisibleRowCount(4);
southPanel.add(scrollPane2);
wholeFramePanel2.add(southPanel);
addCruiseF.add(wholeFramePanel2);
addCruiseF.setVisible(true);

我尝试过的:

shipList.setSelectedIndex(shipList.getSelectedIndex());

和...

for (int i = 0; i < model.getSize(); i++) {
     Object o = model.getElementAt(i);
     if(o.equals(cruise.getShip())){
       shipList.ensureIndexIsVisible(shipList.getSelectedIndex());
      shipList.setSelectedIndex(i);  
                }
            }

尽管上述两种方法似乎都没有突出邮轮分配给的船只。我该怎么做?

最佳答案

这当然什么都不做:

shipList.setSelectedIndex(shipList.getSelectedIndex());

因为您正尝试使用来自相同 未选择的 JList 的选择来选择列表。这是正确的想法,但您需要使用原始 JList 中的选择索引。您将如何执行此操作的具体细节取决于您的程序的结构,但我敢打赌您将能够弄清楚这一点。

关于java - 在 JList 中有一个预选选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29105070/

相关文章:

java - 如何以编程方式在 android 中授予 "draw over other apps"权限?

java - 如何从 Java 执行 python 脚本?

java - JLabel 中的文本被复制

java - 跨多个类使用单个 JFrame

c# - 在 form.show 之后让主线程在按下按钮时执行代码

java - 有没有可以显示整段代码的软件?

java - getText() 在 sendKeys() 之后返回空字符串

java - 如何为新生成的图像提供分辨率?

java - java 数组和 Action 监听器

java - 项目监听器不起作用