gpt4 book ai didi

java - 如何让 JList 项目显示在 JTextField 中

转载 作者:行者123 更新时间:2023-11-29 05:46:02 25 4
gpt4 key购买 nike

我制作了一个带有 4 个选项的简单 JList,并且在 JList 旁边有一个 JTextField。如何从 JList 中获取用户的选择以显示在 JTextField 中? (代码已被编辑以包含 Listener 类)

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class JListExample extends JFrame
{
private JPanel p1, p2;
private JList jList; // instance variables
private JScrollPane scrollPane;
private JTextField jtfChoice;

public JListExample() // constructor
{
String[] itemList = {"alpla", "beta", "gamma", "delta", "omega"}; // array of Strings for list of items
jList = new JList(itemList);
jList.setSelectedIndex(1); // default item selected
jList.setVisibleRowCount(3); // no. of visible rows
jList.setSize(220, 200);

p1 = new JPanel();
p1.add(jtfChoice = new JTextField(8), BorderLayout.CENTER);

p2 = new JPanel();
p2.add(scrollPane = new JScrollPane(jList), BorderLayout.WEST);
p2.add(p1);

add(p2, BorderLayout.EAST);
ListenerClass ListSelectionListener = new ListenerClass();
jList.addListSelection(listener);
}

public static void main(String[] args)
{
JListExample frame = new JListExample(); // new frame object
frame.setTitle("JList Example"); // set frame title
frame.pack(); // sizes the frame so components fit frame
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // ends program on frame closing
frame.setLocationRelativeTo(null); // centre frame
frame.setVisible(true); // make frame visible
}
private class ListenerClass implements ListSelectionListener
{
public void valueChanged(ListSelectionEvent e)
{
JTextField.setText();
}
}
}

最佳答案

你引用的是类名,而不是变量:

JTextField.setText();

你想要的是:

jtfChoice.setText();

此外,当您应该导入 swing 事件时,您正在导入 awt 事件:

import javax.swing.event.*;

此外,您永远不会声明listener:

ListenerClass ListSelectionListener = new ListenerClass();
jList.addListSelection(listener); //listener doesn't exist

这是你应该做的:

ListenerClass listener = new ListenerClass();
jList.addListSelectionListener(listener);

总而言之,最终的功能类如下所示:

import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;

public class JListExample extends JFrame {

private JPanel p1, p2;
private JList jList;
private JScrollPane scrollPane;
private JTextField jtfChoice;

public JListExample() // constructor
{
String[] itemList = {"alpla", "beta", "gamma", "delta", "omega"};
jList = new JList(itemList);
jList.setSelectedIndex(1);
jList.setVisibleRowCount(3);
jList.setSize(220, 200);

p1 = new JPanel();
p1.add(jtfChoice = new JTextField(8), BorderLayout.CENTER);

p2 = new JPanel();
p2.add(scrollPane = new JScrollPane(jList), BorderLayout.WEST);
p2.add(p1);

add(p2, BorderLayout.EAST);
ListenerClass listener = new ListenerClass();
jList.addListSelectionListener(listener);
}

public static void main(String[] args) {
JListExample frame = new JListExample();
frame.setTitle("JList Example");
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}

private class ListenerClass implements ListSelectionListener {

public void valueChanged(ListSelectionEvent e) {
jtfChoice.setText(jList.getSelectedValue().toString());
}
}
}

完全不相关的说明:您的评论并没有真正添加任何内容。当你说这样的话时:

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // ends program on frame closing

您所做的只是复制代码中已有的内容。好的代码应该是 self 记录的,注释应该解释为什么如何,而不是是什么

关于java - 如何让 JList 项目显示在 JTextField 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15813785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com