2010-08-17 50 views
1

有沒有人知道如何最大化一個特定的動作發生後的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(); 
     } 
    }); 
} 

}

回答

4

你並不需要包括當前狀態;這應該是足夠了:

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); 
}