最大化JFrame的行动?

一旦发生了特定的动作,有谁知道如何最大化JFrame? 我将在下面发布我的代码,我是一个不评论我的代码的恶魔(我会在某些时候这样做)但它应该是相当自我解释的。 我试图做的是从菜单中选择选项后使框架最大化。 如果有人能告诉我如何编辑我的代码来解决这个问题,我将不胜感激。

谢谢!

import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.JMenu; import javax.swing.JMenuItem; import javax.swing.ButtonGroup; import javax.swing.JMenuBar; import javax.swing.KeyStroke; import javax.swing.ImageIcon; import javax.swing.JPanel; import javax.swing.JTextArea; import javax.swing.JScrollPane; import javax.swing.JFrame; public class MainMenu implements ActionListener { JTextArea output; JScrollPane scrollPane; String newline = "\n"; MapMenu maps = new MapMenu(); public JMenuBar createMenuBar() { JMenuBar menuBar; JMenu menu; JMenuItem menuItem; JMenuItem minOption, maxOption; //Create the menu bar. menuBar = new JMenuBar(); //Build the first menu. menu = new JMenu("File"); menu.setMnemonic(KeyEvent.VK_A); menu.getAccessibleContext().setAccessibleDescription("For window operations"); menuBar.add(menu); minOption = new JMenuItem("Minimize", KeyEvent.VK_T); minOption.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_1, ActionEvent.ALT_MASK)); minOption.getAccessibleContext().setAccessibleDescription("Will minimize window"); minOption.setActionCommand("Minimize"); minOption.addActionListener(this); menu.add(minOption); maxOption = new JMenuItem("Maximize", KeyEvent.VK_T); maxOption.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_2, ActionEvent.ALT_MASK)); maxOption.getAccessibleContext().setAccessibleDescription("Will maximize window"); maxOption.setActionCommand("Maximize"); maxOption.addActionListener(this); menu.add(maxOption); menuItem = new JMenuItem("Exit", KeyEvent.VK_T); menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_3, ActionEvent.ALT_MASK)); menuItem.getAccessibleContext().setAccessibleDescription("Will close window"); menuItem.addActionListener(this); menu.add(menuItem); //Build second menu in the menu bar. menu = new JMenu("Pages"); menu.setMnemonic(KeyEvent.VK_N); menu.getAccessibleContext().setAccessibleDescription("For accessing other pages"); menuBar.add(menu); menuItem = new JMenuItem("Date Calculator", KeyEvent.VK_T); menuItem.getAccessibleContext().setAccessibleDescription("Opens date calculator"); menuItem.addActionListener(this); menu.add(menuItem); menuItem = new JMenuItem("Maps", KeyEvent.VK_T); menuItem.getAccessibleContext().setAccessibleDescription("Opens popular maps"); menuItem.addActionListener(this); menu.add(menuItem); menuItem = new JMenuItem("Points System", KeyEvent.VK_T); menuItem.getAccessibleContext().setAccessibleDescription("Opens points chart"); menuItem.addActionListener(this); menu.add(menuItem); menuItem = new JMenuItem("Foreign Language Re-targets", KeyEvent.VK_T); menuItem.getAccessibleContext().setAccessibleDescription("Opens LPS Lists"); menuItem.addActionListener(this); menu.add(menuItem); //Build third menu in the menu bar. menu = new JMenu("Resources"); menu.setMnemonic(KeyEvent.VK_N); menu.getAccessibleContext().setAccessibleDescription("For external resources"); menuBar.add(menu); menuItem = new JMenuItem("Helpful Sites", KeyEvent.VK_T); menuItem.getAccessibleContext().setAccessibleDescription("Opens website links"); menuItem.addActionListener(this); menu.add(menuItem); //Build fourth menu in the menu bar. menu = new JMenu("Help"); menu.setMnemonic(KeyEvent.VK_N); menu.getAccessibleContext().setAccessibleDescription("For help pages"); menuBar.add(menu); menuItem = new JMenuItem("How To Use", KeyEvent.VK_T); menuItem.getAccessibleContext().setAccessibleDescription("Opens tutorial for AAA"); menuItem.addActionListener(this); menu.add(menuItem); menuItem = new JMenuItem("About", KeyEvent.VK_T); menuItem.getAccessibleContext().setAccessibleDescription("Opens information about AAA"); menuItem.addActionListener(this); menu.add(menuItem); menuItem = new JMenuItem("Update", KeyEvent.VK_T); menuItem.getAccessibleContext().setAccessibleDescription("Opens website for AAA"); menuItem.addActionListener(this); menu.add(menuItem); return menuBar; } public Container createContentPane() { //Create the content-pane-to-be. JPanel contentPane = new JPanel(new BorderLayout()); contentPane.setOpaque(true); //Create a scrolled text area. output = new JTextArea(5, 30); output.setEditable(false); scrollPane = new JScrollPane(output); //Add the text area to the content pane. contentPane.add(scrollPane, BorderLayout.CENTER); return contentPane; } // Returns just the class name -- no package info. protected String getClassName(Object o) { String classString = o.getClass().getName(); int dotIndex = classString.lastIndexOf("."); return classString.substring(dotIndex+1); } /** Returns an ImageIcon, or null if the path was invalid. */ protected static ImageIcon createImageIcon(String path) { java.net.URL imgURL = MainMenu.class.getResource(path); if (imgURL != null) { return new ImageIcon(imgURL); } else { System.err.println("Couldn't find file: " + path); return null; } } /** * Create the GUI and show it. For thread safety, * this method should be invoked from the * event-dispatching thread. */ private static void createAndShowGUI() { //Create and set up the window. JFrame.setDefaultLookAndFeelDecorated(false); JFrame frame = new JFrame("Account Appeal Aide"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Create and set up the content pane. MainMenu demo = new MainMenu(); frame.setJMenuBar(demo.createMenuBar()); frame.setContentPane(demo.createContentPane()); //Display the window. frame.setSize(500, 400); frame.setVisible(true); frame.setResizable(false); Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); int w = frame.getSize().width; int h = frame.getSize().height; int x = (dim.width-w)/2; int y = (dim.height-h)/2; frame.setLocation(x, y); } public void maximizeFrame(JFrame aFrame) { aFrame.setExtendedState(aFrame.getExtendedState()|JFrame.MAXIMIZED_BOTH); } public void actionPerformed(ActionEvent e) { if("Minimize".equals(e.getActionCommand())) { maps.openMapMenu(); } if("Maximize".equals(e.getActionCommand())) { //maximizeFrame(); } } public static void main(String[] args) { //Schedule a job for the event-dispatching thread: //creating and showing this application's GUI. javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); } }); } 

}

您不需要包含当前状态; 这应该足够了:

 aFrame.setExtendedState(JFrame.MAXIMIZED_BOTH); 

但是,您需要在actionPerformed方法中访问您的框架,因此您应该将其设为私有字段。

在课程开始时,您声明一些字段。 这些都应该标记为私有,你也应该添加框架。 所以它看起来像这样:

 public class MainMenu implements ActionListener { private JTextArea output; private JScrollPane scrollPane; private String newline = "\n"; private MapMenu maps = new MapMenu(); private JFrame frame; 

然后,当你有JFrame frame = new JFrame("Account Appeal Aide"); ,只做frame = new JFrame("Account Appeal Aide"); 代替; frame已经宣布。 然后,您也可以在actionPerformed使用它:

 if("Maximize".equals(e.getActionCommand())) { maximizeFrame(frame); }