嘿堆棧溢出鄉親的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