带有提供信息的列表的JFrame

use*_*297 1 java swing jpanel jframe jlist

我对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);



             }
     });
Run Code Online (Sandbox Code Playgroud)

Hov*_*els 5

建议:

  • 弹出的帮助菜单应该是某种对话,也许是非模态的JDialog.
  • 您应该让它使用CardLayout,以便它最初显示公式名称,可能在JScrollPane持有的JList中.
  • 选择JList项目后,通过CardLayout交换视图并显示相应的公式.

链接:

编辑
你在评论中说明,

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

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