加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 创建条目列表并使每个条目可单击

发布时间:2020-12-15 05:20:50 所属栏目:Java 来源:网络整理
导读:我正在尝试创建一个有两个窗格的UI. 在左侧窗格中,我显示文件列表,右窗格显示内容. 现在,我希望左窗格中的文件列表看起来像普通列表.但是,当我单击此列表中的条目时,特定文件的内容应显示在右侧窗格中. 如何使用Swing实现这一目标? 解决方法 在这里,我做了
我正在尝试创建一个有两个窗格的UI.

在左侧窗格中,我显示文件列表,右窗格显示内容.

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

如何使用Swing实现这一目标?

解决方法

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

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();
            }
        });
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读