INV 프로그램이 메뉴 항목을 제거하기 전에 OK 였지만 그때는 모두 너무 좋아했습니다. 너무 많이했습니다. 그래서 매번 제거 할 때마다 마우스 오른쪽 버튼으로 클릭 한 특정 항목에 대한 메뉴 항목을 추가하려면 어떻게해야합니까?JMenuItems를 효율적으로 추가하는 방법
그래서 항목 1을 마우스 오른쪽 버튼으로 클릭하면 "사용"및 "놓기"가 메뉴에 추가됩니다. 그런 다음 옵션을 선택하면 JMenu가 모든 것을 삭제하여 시작한 위치에서 올바르게 작동하게됩니다. 그런 다음 ITEM 2를 마우스 오른쪽 버튼으로 클릭하면 "사용"과 "취소"가 추가됩니다. 내가 어디로 가는지 보아라. 당신 같이
popup.add(item = new JMenuItem("Cancel"));
item.addActionListener(menuListener);
과 : -
은내가 나 자신을 일을 시도하지만, 난 그냥 그것을 할 방법을 알아낼 수 없습니다 예를 들어, 새로운 JMenuItem를 추가하려면이 작업을 수행 할 필요가 볼 수 있습니다, actionlistener를 추가하십시오. 나는 그 아래에서 할 수 없다 if (actItemx == "Item 1") {
그래서 ... 나는 무엇을 하느냐?
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseAdapter;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
public class inv extends JApplet implements MouseListener
{
public JList listbox;
public JPopupMenu popup;
public JMenuItem item;
public void init()
{
ActionListener menuListener = new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
String invAction = event.getActionCommand();
int itemSelect = listbox.getSelectedIndex();
Object actItem = listbox.getModel().getElementAt(itemSelect);
System.out.println("Popup menu item [" + invAction + "] [ " + actItem + " ] was pressed.");
}
};
popup = new JPopupMenu();
popup.add(item = new JMenuItem("Use"));
item.addActionListener(menuListener);
popup.add(item = new JMenuItem("Drop"));
item.addActionListener(menuListener);
popup.add(item = new JMenuItem("Cancel"));
item.addActionListener(menuListener);
String listData[] =
{
"Item 1","Item 2","Item 3","Item 4"
};
listbox = new JList(listData);
listbox.addMouseListener(new MouseAdapter()
{
public void mousePressed(MouseEvent e)
{
if (SwingUtilities.isRightMouseButton(e))
{
System.out.println("Row: " + getRow(e.getPoint()));
listbox.setSelectedIndex(getRow(e.getPoint()));
}
}
}
);
listbox.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
add(listbox);
listbox.setVisible(true);
listbox.setFocusable(false);
listbox.addMouseListener(new MousePopupListener());
}
class MousePopupListener extends MouseAdapter
{
public void mousePressed(MouseEvent e)
{
checkPopup(e);
}
public void mouseClicked(MouseEvent e)
{
checkPopup(e);
}
public void mouseReleased(MouseEvent e)
{
checkPopup(e);
}
private void checkPopup(MouseEvent e)
{
if (e.isPopupTrigger())
{
int itemSelectx = listbox.getSelectedIndex();
Object actItemx = listbox.getModel().getElementAt(itemSelectx);
System.out.println("You pressed on " + actItemx);
if (actItemx == "Item 1") {
System.out.println("Removed cancel for " + actItemx);
popup.remove(itemSelectx); // So upon right-click on Item 1, you won't see "Cancel" menu.
}
popup.show(inv.this, e.getX(), e.getY());
popup.revalidate();
}
}
}
private int getRow(Point point)
{
return listbox.locationToIndex(point);
}
public void mouseEntered(MouseEvent e)
{
}
public void mouseReleased(MouseEvent e)
{
}
public void mousePressed(MouseEvent e)
{
}
public void mouseClicked(MouseEvent e)
{
}
public void mouseExited(MouseEvent e)
{
}
}
이 기능은 저를 위해 작동하지 않습니다. 새 Q를 게시 할 것입니다. – nn2