嘿堆栈溢出乡亲的Java GUI组件,增加对鼠标事件
我一直在试图获取代码的工作,我可以双击某个项目在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);
}
你可以提供任何帮助将是巨大的,如果需要更多的解释,我很高兴地要求它
你确定问题出在鼠标处理程序上吗?不与GUI本身?也许你需要调用repaint()或其他东西? – Aziz 2009-04-27 04:55:35