[Java] 为文件选择器添加右键上下文菜单 →→→→→进入此内容的聊天室

来自 , 2020-08-18, 写在 Java, 查看 101 次.
URL http://www.code666.cn/view/373cb8cd
  1.         public class ContextMenuFileChooser extends JFileChooser {
  2.            
  3.            protected Component right_click_pane;
  4.  
  5.            public ContextMenuFileChooser() {
  6.                    super();
  7.                    JPopupMenu popup = new JPopupMenu();
  8.                    popup.add(new DeleteAction(this));
  9.                    popup.add(new NewFolderAction(this));
  10.                    right_click_pane = new RightClickGlassPane(this,popup) {
  11.                 protected void redispatchMouseEvent(MouseEvent e, boolean repaint) {        
  12.                         Component component = getRealComponent(e.getPoint());
  13.                         if(component == null) { return; }
  14.                         String chooser_class =
  15.                                 "javax.swing.plaf.metal.MetalFileChooserUI$5";
  16.                         if(component.getClass().getName().equals(chooser_class)) {
  17.                                 super.redispatchMouseEvent(e,repaint);
  18.                         } else {
  19.                                 doDispatch(e);
  20.                         }
  21.                 }
  22.         };
  23.  
  24.        }
  25.         protected JDialog createDialog(Component parent) {
  26.                 JDialog dialog = super.createDialog(parent);
  27.                 // create the right-click glass pane.
  28.                 dialog.setGlassPane(right_click_pane);
  29.                 right_click_pane.setVisible(true);
  30.                 return dialog;
  31.     }
  32.  
  33.         class DeleteAction extends AbstractAction {
  34.                 protected JFileChooser chooser;
  35.                 public DeleteAction(JFileChooser chooser) {
  36.                         super("Delete");
  37.                         this.chooser = chooser;
  38.                 }
  39.                 public void actionPerformed(ActionEvent evt) {
  40.                         File file = chooser.getSelectedFile();
  41.                         if(file != null) {
  42.                                 file.delete();
  43.                                 chooser.rescanCurrentDirectory();
  44.                         }
  45.                 }
  46.         }
  47.  
  48.  class NewFolderAction extends AbstractAction {
  49.         protected JFileChooser chooser;
  50.         public NewFolderAction(JFileChooser chooser) {
  51.                 super("New Folder");
  52.                 this.chooser = chooser;
  53.         }
  54.         public void actionPerformed(ActionEvent evt) {
  55.                 File cwd = chooser.getCurrentDirectory();
  56.                 if(cwd != null) {
  57.                         File new_dir = new File(cwd,"New Folder");
  58.                         new_dir.mkdir();
  59.                         chooser.rescanCurrentDirectory();
  60.                 }
  61.         }
  62. }
  63.         }  
  64.  
  65.  
  66.         public static void main(String[] args) {
  67.                 final JFileChooser jfc = new ContextMenuFileChooser();
  68.                 jfc.showOpenDialog(null);
  69.                 System.exit(0);
  70.         }
  71. //java/1331

回复 "为文件选择器添加右键上下文菜单"

这儿你可以回复上面这条便签

captcha