java - 创建条目列表并使每个条目都可点击

标签 java swing list jlist jtree

我正在尝试创建一个具有两个 Pane 的 UI。

在左 Pane 中我显示文件列表,右 Pane 显示内容。

现在,我希望左侧 Pane 中的文件列表看起来像一个普通列表。但是当我单击此列表中的条目时,特定文件的内容应显示在右 Pane 中。

如何使用 Swing 实现此目的?

最佳答案

这里我做了一个简短的例子,左边是JList,右边是JTextArea。我已使用 ListSelectionListener 来更改项目列表。根据您的方便使用 LayoutManager

enter image description here

import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

public class JListTest {

    private JList jList1;
    private JPanel jPanel1;
    private JTextArea jTextArea1;

    public JListTest() {
        initComponents();
    }

    private void initComponents() {
        JFrame f = new JFrame();
        jPanel1 = new JPanel();
        jList1 = new JList();
        jTextArea1 = new JTextArea();

        jList1.setModel(new AbstractListModel() {

            String[] strings = {"Item 1", "Item 2"};

            @Override
            public int getSize() {
                return strings.length;
            }

            @Override
            public Object getElementAt(int i) {
                return strings[i];
            }
        });
        jList1.addListSelectionListener(new ListSelectionListener() {

            @Override
            public void valueChanged(ListSelectionEvent evt) {
                jList1ValueChanged(evt);
            }
        });

        jTextArea1.setColumns(20);
        jTextArea1.setRows(5);

        jPanel1.add(jList1);
        jPanel1.add(jTextArea1);
         f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        f.add(jPanel1);
        f.pack();
        f.setVisible(true);
    }

    private void jList1ValueChanged(javax.swing.event.ListSelectionEvent evt) {
        //set text on right here
        String s = (String) jList1.getSelectedValue();
        if (s.equals("Item 1")) {
            jTextArea1.setText("You clicked on list 1");
        }
        if (s.equals("Item 2")) {
            jTextArea1.setText("You clicked on list 2");
        }
    }

    public static void main(String args[]) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                new JListTest();
            }
        });
    }
}

关于java - 创建条目列表并使每个条目都可点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14625091/

相关文章:

java - 更改面板背景颜色 3 种不同的方式

java仿射变换正确顺序

c# - ASP.Net MVC RouteData 和数组

list - 解析和替换 kotlin 中的对象列表

python - 根据字符将 Python 字符串列表拆分为单独的列表

java - Spring Cloud DataFlow RabbitMQ 最小启动间隔

java - 使用 Java 从 MongoDB 获取随机文档/记录

java - Swing (AWT) 识别绘制的形状

java - 如何在java中使用printf

java - 如何查找最小值和最大值以及每个值出现的次数