2016-08-01 2 views
0

Ich arbeite an einem kleinen Projekt in Richtung meines Absolventen, wo ich "senden an" Option mit JFileChooser haben muss. Ich möchte, dass diese Option beim Rechtsklick-Ereignis angezeigt wird. Bitte schlagen Sie vor, wie Sie vorgehen können?Wie man "sende an" -Option mit JFileChooser hinzufügt

Hinweis: Ich verwende Windows 7.

Antwort

0

Sie könnten verwenden JPopupMenu

Zum Beispiel

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); 
    } 
}