我对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方法的详细信息.
建议:
弹出的帮助菜单应该是某种对话,也许是非模态的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方法的详细信息.