这是我当前的菜单: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。希望能有所帮助。
添加回答
举报
0/150
提交
取消