猿问

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

这是我当前的菜单:


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


慕斯709654
浏览 484回答 3
3回答

杨__羊羊

为了详细说明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。希望能有所帮助。
随时随地看视频慕课网APP

相关分类

Java
我要回答