【Gloomyfish】Java Swing 实现实际大小到全屏切换

Summary:

just provide any JPanel which you want to make it diaplay as full screen mode, it’s very helpful for you

to use this utility class.

package com.gloomyfish.smtp.client;import java.awt.BorderLayout;import java.awt.Container;import java.awt.Dimension;import java.awt.FlowLayout;import java.awt.Frame;import java.awt.GraphicsDevice;import java.awt.GraphicsEnvironment;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JDialog;import javax.swing.JPanel;/** * @author gloomy fish * @date 2011-03-03 */public class FullScreenViewer {private Dimension size;private JPanel sourcePanel;private JPanel buttonsPanel;private JButton exitBtn;/** *  display any JComponent as full screen, need to pass in root Container *  * invoke swing graphic utility tool, it's a bug!! when double buffer image * JFreechart * @param JFrame rootComponent */public void showFullScreenOne(Frame rootComponent) {final JDialog dialog = new JDialog(rootComponent, true);dialog.getContentPane().setLayout(new BorderLayout());final Container parent = sourcePanel.getParent();dialog.getContentPane().add(sourcePanel, BorderLayout.CENTER);dialog.getContentPane().add(buttonsPanel, BorderLayout.SOUTH);dialog.setUndecorated(true);exitBtn.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {dialog.setVisible(false);}});GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();GraphicsDevice gd = ge.getDefaultScreenDevice();if (gd.isFullScreenSupported()) {try {gd.setFullScreenWindow(dialog);} finally {gd.setFullScreenWindow(null);dialog.dispose();if (parent != null) {sourcePanel.setSize(size);parent.add(sourcePanel);}}}}/** * * it's a bug!! when double buffer image JFreechart *  * @param owner */public void showFullScreenTwo(Frame owner) {final JDialog dialog = new JDialog(owner, true);dialog.getContentPane().setLayout(new BorderLayout());final Container parent = sourcePanel.getParent();dialog.getContentPane().add(sourcePanel, BorderLayout.CENTER);dialog.getContentPane().add(buttonsPanel, BorderLayout.SOUTH);exitBtn.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {dialog.setVisible(false);dialog.dispose();if (parent != null) {sourcePanel.setSize(size);parent.add(sourcePanel);}}});Toolkit tk = Toolkit.getDefaultToolkit();int xSize = ((int) tk.getScreenSize().getWidth());int ySize = ((int) tk.getScreenSize().getHeight());dialog.setUndecorated(true);dialog.setSize(xSize, ySize);dialog.setResizable(false);dialog.setVisible(true);dialog.toFront();}public FullScreenViewer(JPanel sourcePanel) {this.sourcePanel = sourcePanel;initComponents();}private void initComponents() {exitBtn = new JButton("Exit");buttonsPanel = new JPanel();buttonsPanel.setLayout(new FlowLayout(FlowLayout.CENTER));buttonsPanel.add(exitBtn);size = new Dimension(sourcePanel.getSize().width,sourcePanel.getSize().height);}}

PS:

There is an potential problem in above code implementation, just contact me

if you found this issue as well…

在乎的是沿途的风景以及看风景的心情,让心灵去旅行!

【Gloomyfish】Java Swing 实现实际大小到全屏切换

相关文章:

你感兴趣的文章:

标签云: