【问题标题】:Get text element inside JList to a variable?将 JList 中的文本元素获取到变量中?
【发布时间】:2012-02-13 01:01:11
【问题描述】:

尽管进行了大量研究,但我找不到答案或解决如何将 JList 中的选定文本元素获取到变量。因此,我希望得到一些帮助。我尝试使用此代码选择所选元素的索引并删除元素,并且效果很好,但是正如我所写的,我希望在按下按钮后将所选文本转换为变量。谢谢!

int index = list.getSelectedIndex();
model.removeElementAt(index);

我的部分 JList 代码:

model = new DefaultListModel();
list = new JList(model);
list.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
JScrollPane listScroller = new JScrollPane(list);
listScroller.setPreferredSize(new Dimension(430, 60));

我的 actionlistener 代码的一部分:

// Select customer
if(event.getSource() == buttonSelectCustomer){
int index = list.getSelectedIndex(); // Just for test
model.removeElementAt(index); // Just for test
int number = model.getSize(); // Just for test
//String selectedText = list.getSelectedValue(); // Not working!
}

【问题讨论】:

    标签: java swing jlist


    【解决方案1】:

    对当前选定的索引使用ListModel#getElementAt(int) 方法。如果您确定您的模型仅包含 String 实例,您也可以直接将其转换为 String

    【讨论】:

    • 感谢重播。我输入这个: String selectedText = model.getElementAt(index);但我在 Eclipse 中收到一个错误,说我无法从对象转换为字符串!?
    • 你应该投射它......这不是获取一些教程并开始阅读的好点。对于您的问题,请使用:String selectedText = (String)model.getElementAt(index);,您可能可以通过让 Eclipse 为您解决此问题来实现
    • 我同意罗宾的观点。阅读一些 Java 初学者教程,可能会转向。
    • 谢谢罗宾。我一直在阅读书籍和教程,但是创建 GUI 的这一部分对我来说是新的,而不是在我的书中。也许问题在于,这个交作业比我学习 Java 的那门课程的水平高一点。以后像我这样的新手提问时请耐心等待
    • 关于强制转换,由于列表中的文本是 String 类型,所以我很困惑为什么必须再次将它们强制转换为 String,或者不是这样做的?
    【解决方案2】:

    您无法获取选定的文本,因为您在删除选定的元素后尝试获取它。 您可以更改您的代码:

    if(event.getSource() == buttonSelectCustomer)
    {
        int index = list.getSelectedIndex(); // Just for test
        model.removeElementAt(index); // Just for test
        int number = model.getSize(); // Just for test
        String selectedText = list.getSelectedValue(); // Not working!
    }
    

    我的代码:

    if(event.getSource() == buttonSelectCustomer)
    {
        String selectedText = (String)list.getSelectedValue(); // it works
        int index = list.getSelectedIndex(); // Just for test
        model.removeElementAt(index); // Just for test
        int number = model.getSize(); // Just for test
    }
    

    然后就可以了。

    【讨论】:

    • 是的,我发现了这一点,但主要问题是如何将文本放入字符串变量中,并且在运行程序之前在 Eclipse 中出现错误,然后我发现它删除了该元素。我忘了删除那部分代码。谢谢!
    【解决方案3】:

    检索选定索引的项目很容易。 这是一个简单的代码-sn-p:

    String[] string = new String[]{"Hello","Hi","Bye"};
    JList list = new JList(string);
    

    现在使用以下代码将选中的项目作为字符串获取:

    String item = list.getSelectedIndex().toString();
    

    【讨论】:

      猜你喜欢
      • 2013-02-02
      • 2017-02-19
      • 1970-01-01
      • 1970-01-01
      • 2013-04-19
      • 1970-01-01
      • 2018-04-19
      • 1970-01-01
      • 2021-03-25
      相关资源
      最近更新 更多