gpt4 book ai didi

java - 在鼠标事件上添加 Java GUI 组件

转载 作者:行者123 更新时间:2023-12-02 00:55:27 25 4
gpt4 key购买 nike

嘿,Stack Overflow 的 friend 们,

我一直在尝试让代码工作,我可以双击JList中的一个项目,它会在框架上的不同位置创建一个新的JList属于该类别的项目的所有对象名称的暂存(我猜这是无用的信息)。但问题是,当我双击列表中的项目时,它会运行代码以将组件添加到 JFrame 中,但它从未显示出来,这是因为我正在使用鼠标事件吗在运行后构建它还是什么?

我的 Gui 类是:

public class MediaGUI extends JFrame

添加代码发生在这里

    _mediaList.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent event) {
if (event.getClickCount() == 2) {
CreateObjectPane(_mediaList.getSelectedValue().toString(););
}
}
});

这里是构建代码,这个方法属于MediaGUI,所以这个。指的是 JFrame

 private void CreateObjectPane(String category)
{
/*=======================================================================
* Create ther list on Objects that belong to each category
* Also a scroll bar for the list
*=======================================================================*/
String objects[] = _mediaHandler.GetObjects(category);
_mediaList = new JList(objects);
_mediaList.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
_mediaList.setLayoutOrientation(_mediaList.VERTICAL);
_mediaList.setVisibleRowCount(-1);

_mediaScrollPane = new JScrollPane(_mediaList);
_mediaScrollPane.setPreferredSize(new Dimension(100,100));
_mediaScrollPane.setAlignmentX(CENTER_ALIGNMENT);

_mediaPanel = new JPanel();
_mediaPanel.setLayout(new BoxLayout(_mediaPanel, BoxLayout.PAGE_AXIS));
_mediaLabel = new JLabel("Media Objects");
_mediaLabel.setLabelFor(_mediaList);

_mediaPanel.add(_mediaLabel);
_mediaPanel.add(Box.createRigidArea(new Dimension(0, 15)));
_mediaPanel.add(_mediaScrollPane);
_mediaPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));

this.add(_mediaPanel, BorderLayout.CENTER);
}

您能提供的任何帮助都会很棒,如果需要更多解释,我很乐意要求它

最佳答案

来自documentation :

Note: If a component has been added to a container that has been displayed, 
validate must be called on that container to display the new component.
If multiple components are being added, you can improve efficiency by
calling validate only once, after all the components have been added.

其他一些提示:

  • 将 CreateObjectPane 重命名为 createObjectPane
  • 您使用什么布局管理器?尝试尝试一下,因为大多数时候新组件不会出现在您期望的位置。

关于java - 在鼠标事件上添加 Java GUI 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/792245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com