最大化JFrame的行动? [英] Maximizing a JFrame on action?
问题描述
有没有人知道在发生特定操作后如何最大化JFrame?我将在下面发布我的代码,我是一个不评论我的代码的恶魔(我会在某些时候这样做)但它应该是相当自我解释的。我试图做的是从菜单中选择选项后使框架最大化。如果有人能告诉我如何编辑我的代码来解决这个问题,我们将不胜感激。
Does anyone know how to maximize a JFrame once a specfic action has occured? I'll post my code below, I'm a fiend for not commenting my code (I'll do it at some point) but it should be fairly self explanitory. What I was trying to do was to get the frame to maximize once the option was selected from the menu. If anyone can tell me how I need to edit my code to pull this off, it would be greatly appreciated.
谢谢!
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();
}
});
}
}
推荐答案
您不需要包含当前状态;这应该足够了:
You don't need to include the current state; this should be enough:
aFrame.setExtendedState(JFrame.MAXIMIZED_BOTH);
您需要在 actionPerformed $ c $中访问您的相框c>方法,所以你应该把它变成一个私有字段。
You will need access to your frame in the actionPerformed
method, though, so you should probably make it a private field.
在你的课程开始时,你声明一些字段。这些都应该标记为私有,你也应该添加框架。所以它看起来像这样:
At the beginning of your class, you declare some fields. Those should all be marked private, and you should add the frame as well. So it would look like this:
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上诉助手);
,只需执行 frame = new JFrame(帐户上诉助理);
代替; frame
已经宣布。然后,您也可以在 actionPerformed
中使用它:
Then, later, when you have JFrame frame = new JFrame("Account Appeal Aide");
, just do frame = new JFrame("Account Appeal Aide");
instead; frame
has already been declared. Then, you can use it in actionPerformed
as well:
if("Maximize".equals(e.getActionCommand())) {
maximizeFrame(frame);
}
这篇关于最大化JFrame的行动?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!