我正在嘗試使用JTree併爲所有父節點和子節點實現不同的下拉菜單。JTree和右鍵單擊節點上的下拉選項
這是我做了什麼:
pmTree.addMouseListener(new java.awt.event.MouseAdapter() {
@Override
public void mouseClicked(java.awt.event.MouseEvent evt) {
try {
if(evt.getButton() == evt.BUTTON1) {
}
else if (evt.getButton() == evt.BUTTON3) {
TreePopup(evt);
//pmTree.updateUI();
}
}catch (Exception e) {}
}
});
和PopupCode:
public void TreePopup(java.awt.event.MouseEvent evt) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode) pmTree.getLastSelectedPathComponent();
popup = new JPopupMenu();
popup.setInvoker(pmTree);
PopupHandler handler = new PopupHandler(pmTree, popup);
if(node.getLevel() == 1)
{
popup.add(getMenuItem("Parent Node", handler));
}
else if(node.getLevel() == 2)
{
popup.add(getMenuItem("Child", handler));
}
}
和PopUpHandler:
public class PopupHandler extends javax.swing.JFrame implements ActionListener {
JPopupMenu popup;
Point loc;
public PopupHandler(JTree tree, JPopupMenu popup) {
//this.tree = NewJFrame.pmTree;
this.popup = popup;
tree.addMouseListener(ma);
}
,也是
public void actionPerformed(java.awt.event.ActionEvent evt)
爲被點擊的子節點或父節點。
但是,當我運行該程序時,我爲子節點和父節點獲取了相同的彈出式右鍵單擊。
對不起,大量的代碼。我一直堅持了2天,但沒有成功。 謝謝!
沒有 - 在表現良好的UI選擇無關彈出觸發 – kleopatra
@kleopatra我不同意,單擊鼠標右鍵(彈出觸發)通常選擇。例如,看看Windows資源管理器。 –
你是對的 - 只是檢查。這很奇怪,我記得Swing團隊的強烈辯論迫使他們不選擇右鍵單擊。所以那個時候(咳嗽......前一陣子)我猜勝利沒有選擇。感謝您的領導! – kleopatra