2016-08-01 2 views
0

나는 JFileChooser로 "보내기"옵션이 필요한 내 대학원을 향한 작은 프로젝트를 진행하고 있습니다. Right Click 이벤트에이 옵션이 나타나기를 원합니다. 그것에 대해 어떻게 가야할까요?JFileChooser로 "보내기"옵션을 추가하는 방법

참고 : 나는 윈도우 7

답변

0

당신은 JPopupMenu의 예를 들어

을 사용할 수를 사용하고

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.event.MouseAdapter; 
import java.awt.event.MouseEvent; 

import javax.swing.JFileChooser; 
import javax.swing.JFrame; 
import javax.swing.JMenuItem; 
import javax.swing.JPanel; 
import javax.swing.JPopupMenu; 
import javax.swing.border.BevelBorder; 
import javax.swing.event.PopupMenuEvent; 
import javax.swing.event.PopupMenuListener; 

public class PopupMenuExample extends JPanel { 

    public JPopupMenu popup; 

    public PopupMenuExample() { 
    popup = new JPopupMenu(); 
    ActionListener menuListener = new ActionListener() { 
     public void actionPerformed(ActionEvent event) { 
     System.out.println("Popup menu item [" 
      + event.getActionCommand() + "] was pressed."); 
     if(event.getActionCommand().equals("Send To")) { 
      JFileChooser fileChooser = new JFileChooser(); 
      int result = fileChooser.showSaveDialog(null); 
      // your logic here 
     } 
     } 
    }; 
    JMenuItem item; 
    popup.add(item = new JMenuItem("Send To")); 
    item.setHorizontalTextPosition(JMenuItem.RIGHT); 
    item.addActionListener(menuListener); 
    popup.add(item = new JMenuItem("Left")); 
    item.setHorizontalTextPosition(JMenuItem.RIGHT); 
    item.addActionListener(menuListener); 
    popup.add(item = new JMenuItem("Center")); 
    item.setHorizontalTextPosition(JMenuItem.RIGHT); 
    item.addActionListener(menuListener); 
    popup.add(item = new JMenuItem("Right")); 
    item.setHorizontalTextPosition(JMenuItem.RIGHT); 
    item.addActionListener(menuListener); 
    popup.add(item = new JMenuItem("Full")); 
    item.setHorizontalTextPosition(JMenuItem.RIGHT); 
    item.addActionListener(menuListener); 
    popup.addSeparator(); 
    popup.add(item = new JMenuItem("Settings . . .")); 
    item.addActionListener(menuListener); 

    popup.setLabel("Justification"); 
    popup.setBorder(new BevelBorder(BevelBorder.RAISED)); 
    popup.addPopupMenuListener(new PopupPrintListener()); 

    addMouseListener(new MousePopupListener()); 
    } 

    // An inner class to check whether mouse events are the popup trigger 
    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()) { 
     popup.show(PopupMenuExample.this, e.getX(), e.getY()); 
     } 
    } 
    } 

    // An inner class to show when popup events occur 
    class PopupPrintListener implements PopupMenuListener { 
    public void popupMenuWillBecomeVisible(PopupMenuEvent e) { 
     System.out.println("Popup menu will be visible!"); 
    } 

    public void popupMenuWillBecomeInvisible(PopupMenuEvent e) { 
     System.out.println("Popup menu will be invisible!"); 
    } 

    public void popupMenuCanceled(PopupMenuEvent e) { 
     System.out.println("Popup menu is hidden!"); 
    } 
    } 

    public static void main(String s[]) { 
    JFrame frame = new JFrame("Popup Menu Example"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setContentPane(new PopupMenuExample()); 
    frame.setSize(300, 300); 
    frame.setVisible(true); 
    } 
} 
관련 문제