首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何添加JFileChooser以从JPOPUP菜单中获取txt?

如何添加JFileChooser以从JPOPUP菜单中获取txt?
EN

Stack Overflow用户
提问于 2016-10-21 03:47:42
回答 1查看 90关注 0票数 0

在这项任务中我需要一些帮助。点击“找到”弹出窗口..。我想打开文件回音器并记下文本。这行得通,但不是我想要的。

代码语言:javascript
复制
import javax.swing.*;
import javax.swing.text.DefaultEditorKit;

import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.event.*;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.lang.reflect.Method;


 public class Notepad extends JFrame {

     JFrame n = new JFrame();
     JTextArea espacio = new JTextArea();
     JPopupMenu mix = null;
     final JEditorPane document = new JEditorPane();


     public void body(){

    setTitle("Proyecto 2");
    setBounds(360,90,500,450);


    getContentPane().setLayout(null);


    document.setBounds(1,1,499,448);
    getContentPane().add(document, null);




    document.addMouseListener(new MouseAdapter() 
            {
                public void mousePressed(MouseEvent e) 
                {
                    if(javax.swing.SwingUtilities.isRightMouseButton(e)) {

                            mix = new JPopupMenu();

                            JComponent component=(JComponent)e.getComponent();

                            ActionMap actionMap=component.getActionMap();

                            Action action=actionMap.get(DefaultEditorKit.copyAction); 

                            JMenuItem menuItem=mix.add(action);

                            menuItem.setText("Copiar");

                            mix.addSeparator();
                            action=actionMap.get(DefaultEditorKit.pasteAction);
                            menuItem=mix.add(action);

                            menuItem.setText("Pegar");

                            mix.addSeparator();
                            action=actionMap.get(DefaultEditorKit.cutAction);

                            menuItem=mix.add(action);

                            menuItem.setText("Cortar");


                            mix.addSeparator();
                            action=actionMap.get(DefaultEditorKit.selectAllAction);
                            menuItem=mix.add(action);
                            menuItem.setText("Seleccionar Todo");

                            mix.addSeparator();

                            action=actionMap.get(buscador());

                            menuItem=mix.add(action);

                            menuItem.setText("Buscar");

                            mix.show(e.getComponent(),e.getX()-4,e.getY()-6); 

                    }
                }
            });





    setVisible(true); 

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


     }




            private Object buscador() {
             JFileChooser find = new JFileChooser();

              int result = find.showOpenDialog(espacio);
           if (result==JFileChooser.APPROVE_OPTION) {
               File file = find.getSelectedFile();
               try {
                   document.setPage(file.toURI().toURL());
               } catch(Exception e) {
                   e.printStackTrace();
               }

            }
        return result;
            }






    public static void main(String[]args){

         Notepad n = new Notepad();
         n.body();

     }
 }

当我右击时,JFileChooser会打开而不是弹出。

应该打开弹出,然后按“搜索”打开JFileChooser.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-21 04:14:03

这是一个非常快速的答案,因为它没有为Action接口提供一个完整的实现,但我相信它至少会让您朝着正确的方向前进。

首先修改这段代码:

代码语言:javascript
复制
action=actionMap.get(buscador());

对此:

代码语言:javascript
复制
action = buscador();

然后将buscador方法更改为:

代码语言:javascript
复制
private Action buscador() {
    return new Action() {

        @Override
        public void actionPerformed(ActionEvent arg0) {
            JFileChooser find = new JFileChooser();

            int result = find.showOpenDialog(espacio);
            if (result == JFileChooser.APPROVE_OPTION) {
                File file = find.getSelectedFile();
                try {
                    document.setPage(file.toURI().toURL());
                } catch (Exception e) {
                    e.printStackTrace();
                }

            }
        }

        @Override
        public void addPropertyChangeListener(
                PropertyChangeListener listener) {
            // TODO Auto-generated method stub

        }

        @Override
        public Object getValue(String key) {
            // TODO Auto-generated method stub
            return null;
        }

        @Override
        public boolean isEnabled() {
            // TODO Auto-generated method stub
            return true;
        }

        @Override
        public void putValue(String key, Object value) {
            // TODO Auto-generated method stub

        }

        @Override
        public void removePropertyChangeListener(
                PropertyChangeListener listener) {
            // TODO Auto-generated method stub

        }

        @Override
        public void setEnabled(boolean b) {
            // TODO Auto-generated method stub

        }

    };
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40168065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档