为了账号安全,请及时绑定邮箱和手机立即绑定

将JFileChooser与Swing GUI类和侦听器一起使用

将JFileChooser与Swing GUI类和侦听器一起使用

慕斯709654 2019-11-19 11:10:08
这是我当前的菜单:public class DrawPolygons{    public static void main (String[] args) throws FileNotFoundException    {        /**         *   Menu - file reader option         */        JMenuBar menuBar;        JMenu menu;        JMenuItem menuItem;        //  Create the menu bar.        menuBar = new JMenuBar();        //  Build the first menu.        menu = new JMenu("File");        menu.setMnemonic(KeyEvent.VK_F);        menu.getAccessibleContext().setAccessibleDescription("I have items");        menuBar.add(menu);        //  a group of JMenuItems        menuItem = new JMenuItem("Load",KeyEvent.VK_T);        menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_1, ActionEvent.ALT_MASK));        menuItem.getAccessibleContext().setAccessibleDescription("Load your old polygons");        menu.add(menuItem);        menuItem = new JMenuItem("Save",KeyEvent.VK_U);        menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_2, ActionEvent.ALT_MASK));        menuItem.getAccessibleContext().setAccessibleDescription("Save the contents of your polygons");        menu.add(menuItem);        // attaching the menu to the frame        JFrame frame = new JFrame("Draw polygons");        frame.setJMenuBar(menuBar);        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        frame.setContentPane(new DrawingPanel());        frame.pack();        frame.setVisible(true);    }}它有两个选项Load和Save。 在此处输入图片说明现在,我如何将附加JFileChooser到该actionPerformed方法,在这里:/** * Main class * @author X2 * */class DrawingPanel extends JPanel implements MouseListener, MouseMotionListener ,KeyListener{    // code    // code    // and more code    static DrawingPanel app ;      private static final Dimension MIN_DIM = new Dimension(300, 300);    private static final Dimension PREF_DIM = new Dimension(500, 500);    public Dimension getMinimumSize() { return MIN_DIM; }    public Dimension getPreferredSize() { return PREF_DIM; }使用我在中创建的menu和的初始代码?Jpanelmain
查看完整描述

3 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

为了详细说明Kitesurfer所说的内容,我将使用“操作”,因为大多数情况下,我使用工具栏按钮或其他组件执行与菜单项相同的操作。为了避免在类的某个地方(或从当前类可以访问的任何地方)出现重复或不必要的代码,我创建了一个Action字段,可以在需要时重用它,或者在决定重构代码时移动。这是一个例子。


JMenuItem miLoad = new JMenuItem(actionLoad);


Action actionLoad = new AbstractAction("Load") {

    public void actionPerformed(ActionEvent e) {

        //your code to load the file goes here like a normal ActionListener

    }

};

一定要检查一下API,以查看可以将什么参数传递到AbstractAction类中,我使用了,String因此JMenuItem将显示字符串,还可以设置Icon,我不记得所有的构造函数,因此值得一看。哦,将in传递给类JMenuItems的构造函数DrawingPanel并不一定是个坏主意,但是如果它继承自我,JPanel我不相信您可以在菜单栏中添加菜单栏,JPanel因此请确保将菜单栏也添加到您的菜单栏中JFrame。希望能有所帮助。


查看完整回答
反对 回复 2019-11-19
  • 3 回答
  • 0 关注
  • 483 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信