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)
子ノードまたは親ノードがクリックされた場合は
です。
しかし、プログラムを実行すると、子ノードと親ノードの両方に対してSAME右クリックポップアップが表示されます。
大変申し訳ありません。私は2日間それに固執したが、まだ成功していない。 ありがとう!
なし - 行儀の良いUIの選択にはポップアップとは無関係な、私は同意 – kleopatra
@kleopatraをトリガし、右クリック(ポップアップ・トリガー)は、通常選択されます。たとえば、Windowsエクスプローラを見てください。 –
あなたは正しいと判断されました。それは不思議なことですが、私はSwingチームとの激しい議論を、右クリックで選択しないように強く覚えています。だから、その時(咳...もう少し前に)私は勝利を選択しなかったと思います。ヘッドアップをありがとう! – kleopatra