在Java中最大化JInternalFrame
发布时间:2020-12-15 00:05:58 所属栏目:Java 来源:网络整理
导读:我试图让JInternalFrame在启动时最大化.我已经对此进行了网络搜索并尝试了各种代码建议,但它们似乎无法在我的机器上正常运行,该机器在 Windows 7上运行 Java 6. 我已经简化了下面的代码,以便更容易隔离解决方案. 任何人都可以告诉我如何更改下面的代码,以便
我试图让JInternalFrame在启动时最大化.我已经对此进行了网络搜索并尝试了各种代码建议,但它们似乎无法在我的机器上正常运行,该机器在
Windows 7上运行
Java 6.
我已经简化了下面的代码,以便更容易隔离解决方案. 任何人都可以告诉我如何更改下面的代码,以便内部框架在创建时自动最大化? import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import javax.swing.JDesktopPane; import javax.swing.JFrame; import javax.swing.JInternalFrame; import javax.swing.JLayeredPane; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.KeyStroke; public class MaximizeInternalFrame extends JFrame implements ActionListener{ private static final long serialVersionUID = 1L; JLayeredPane desktop; JInternalFrame internalFrame; public MaximizeInternalFrame() { super("Test To Maximize Internal Frame"); this.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE); //Make the big window be indented 50 pixels from each edge of the screen. int inset = 50; Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension screenMinus50 = new Dimension(screenSize.width - inset*2,screenSize.height - inset*2); this.setPreferredSize(screenMinus50); desktop = new JDesktopPane(); setJMenuBar(createMenuBar()); this.add(desktop,BorderLayout.CENTER); this.pack(); this.setSize(screenMinus50); this.setLocationRelativeTo(null); } protected JMenuBar createMenuBar() { JMenuBar menuBar = new JMenuBar(); //Set up the File menu. JMenu FileMenu = new JMenu("File"); FileMenu.setMnemonic(KeyEvent.VK_F); menuBar.add(FileMenu); //Set up the first menu item. JMenuItem menuItem = new JMenuItem("New"); menuItem.setMnemonic(KeyEvent.VK_N); menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,ActionEvent.ALT_MASK)); menuItem.setActionCommand("new"); menuItem.addActionListener(new OpenListener()); FileMenu.add(menuItem); //Set up the second menu item. menuItem = new JMenuItem("Quit"); menuItem.setMnemonic(KeyEvent.VK_Q); menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q,ActionEvent.ALT_MASK)); menuItem.setActionCommand("quit"); menuItem.addActionListener(this); FileMenu.add(menuItem); return menuBar; } class OpenListener implements ActionListener { public void actionPerformed(ActionEvent e) { // create internal frame internalFrame = new JInternalFrame("this internal frame needs to be maximized",true,true); desktop.add(internalFrame); internalFrame.setSize(internalFrame.getMaximumSize()); internalFrame.pack(); internalFrame.setVisible(true); } } public static void main(String args[]) { MaximizeInternalFrame myParentFrame = new MaximizeInternalFrame(); myParentFrame.setVisible(true); } public void actionPerformed(ActionEvent e) {if ("quit".equals(e.getActionCommand())){System.exit(0);}} } 解决方法
在internalFrame.setVisible(true)之后添加以下内容:
try { internalFrame.setMaximum(true); } catch (PropertyVetoException e) { // Vetoed by internalFrame // ... possibly add some handling for this case } 您还可以删除internalFrame.setSize(internalFrame.getMaximumSize()); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |