带有提供信息的列表的JFrame

 海峰2502853427 发布于 2023-02-10 12:18

我对JFrame列表有疑问.我创建了一个帮助菜单按钮.现在的事情是:

单击时会弹出一个新窗口.在这个窗口中,我希望按名称列出一些公式.单击列表中的公式后,我想在同一屏幕中显示公式所代表的含义.

它必须类似于左侧可滚动列表中的公式,并且在某个文本框中右侧的同一屏幕中,单击公式的描述.

有谁知道如何做到这一点?

menuItem = new JMenuItem("Help");
     menuItem.setMnemonic(KeyEvent.VK_H);
     menuItem.addActionListener(new ActionListener()
     {
             public void actionPerformed(ActionEvent e)
             {  

                 JFrame help = new JFrame("HELP");
                 help.setTitle("Help");
                 help.setSize(400,200);
                 help.setLocationRelativeTo(null);
                 help.setDefaultCloseOperation(help.DISPOSE_ON_CLOSE);
                 help.setVisible(true);
                 help.add(label);            

                 String labels[] = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "x", "y"};
                 JList list = new JList(labels);
                 JScrollPane scrollPane = new JScrollPane (list);

                 Container contentPane = help.getContentPane();
                 contentPane.add(scrollPane, BorderLayout.CENTER);



             }
     });

Hovercraft F.. 5

建议:

弹出的帮助菜单应该是某种对话,也许是非模态的JDialog.

您应该让它使用CardLayout,以便它最初显示公式名称,可能在JScrollPane持有的JList中.

选择JList项目后,通过CardLayout交换视图并显示相应的公式.

链接:

CardLayout教程

JList教程


编辑
你在评论中说明,

它必须是像我左边的公式有一个滚动条,在屏幕的右侧有一些带有公式描述的文本框.

这个任何其他相关信息和限制是否应该成为您原始问题的一部分?如果我是你,我会编辑原始帖子并提供所有必要信息,以便我们能够完全理解您的问题,包括相关代码(最好是作为sscce).所以...

使用另一个布局管理器(如GridLayout或更好的BorderLayout)允许您在另一个JPanel中显示多个JPanel.我将留给您找到Swing布局管理器教程的链接.

您仍然可以使用CardLayout交换显示JPanel上显示的等式.


编辑2
关于您的最新代码帖子:

同样,对话框窗口应该是JDialog而不是JFrame.该窗口取决于显示它的窗口,因此不应该是独立的应用程序窗口,例如JFrame.

我将JScrollPane放在BorderLayout.LINE_START位置,将CardLayout放在BorderLayout.CENTER位置使用公式JPanel.

您不必使用CardLayout.如果方程式只是基本文本,您只需更改JLabel的文本即可.

或者如果是图像,则交换JLabel的ImageIcon.

或者,如果有很多文本,那么文本在不可编辑,不可聚焦的JTextArea中


编辑3

有没有办法将大小设置为滚动窗格BorderLayout.LINE_START的固定大小?

考虑在JList上调用一些方法,例如,setPrototypeCellValue(E prototypeCellValue)并且setVisibleRowCount(int visibleRowCount)允许组件根据合理的数据和初始假设设置自己的preferredSize ,而不是尝试设置任何大小.请检查JList API以获取有关这些和其他JList方法的详细信息.

1 个回答
  • 建议:

    弹出的帮助菜单应该是某种对话,也许是非模态的JDialog.

    您应该让它使用CardLayout,以便它最初显示公式名称,可能在JScrollPane持有的JList中.

    选择JList项目后,通过CardLayout交换视图并显示相应的公式.

    链接:

    CardLayout教程

    JList教程


    编辑
    你在评论中说明,

    它必须是像我左边的公式有一个滚动条,在屏幕的右侧有一些带有公式描述的文本框.

    这个任何其他相关信息和限制是否应该成为您原始问题的一部分?如果我是你,我会编辑原始帖子并提供所有必要信息,以便我们能够完全理解您的问题,包括相关代码(最好是作为sscce).所以...

    使用另一个布局管理器(如GridLayout或更好的BorderLayout)允许您在另一个JPanel中显示多个JPanel.我将留给您找到Swing布局管理器教程的链接.

    您仍然可以使用CardLayout交换显示JPanel上显示的等式.


    编辑2
    关于您的最新代码帖子:

    同样,对话框窗口应该是JDialog而不是JFrame.该窗口取决于显示它的窗口,因此不应该是独立的应用程序窗口,例如JFrame.

    我将JScrollPane放在BorderLayout.LINE_START位置,将CardLayout放在BorderLayout.CENTER位置使用公式JPanel.

    您不必使用CardLayout.如果方程式只是基本文本,您只需更改JLabel的文本即可.

    或者如果是图像,则交换JLabel的ImageIcon.

    或者,如果有很多文本,那么文本在不可编辑,不可聚焦的JTextArea中


    编辑3

    有没有办法将大小设置为滚动窗格BorderLayout.LINE_START的固定大小?

    考虑在JList上调用一些方法,例如,setPrototypeCellValue(E prototypeCellValue)并且setVisibleRowCount(int visibleRowCount)允许组件根据合理的数据和初始假设设置自己的preferredSize ,而不是尝试设置任何大小.请检查JList API以获取有关这些和其他JList方法的详细信息.

    2023-02-10 12:20 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有