Java/2D Graphics GUI/Graphic Environment
Содержание
- 1 A quick utility to print out graphic device information
- 2 Create an image that does not support transparency from GraphicsConfiguration
- 3 Create an image that supports arbitrary levels of transparency from GraphicsConfiguration
- 4 Create an image that supports transparent pixels from GraphicsConfiguration
- 5 Create buffered images that are compatible with the screen
- 6 Determine if full-screen mode is supported directly
- 7 Enter full screen mode
- 8 Get the available font family names
- 9 Get the available font names
- 10 Get the GraphicsEnvironment and GraphicsDevice
- 11 Getting Amount of Free Accelerated Image Memory
- 12 Getting Number of Colors
- 13 Getting Refresh Rates
- 14 Getting Screen Sizes
- 15 Getting the Current Screen Refresh Rate and Number of Colors
- 16 Getting the Font Faces for a Font Family
- 17 Getting the Number of Screens
- 18 If more than one screen is available, gets the size of each screen
- 19 Leave full-screen mode (Return to normal windowed mode)
- 20 List all available fonts in the system
- 21 Listing All Available Font Families
- 22 Retrieve and print the graphic device information
- 23 Setting the Screen Size, Refresh Rate, or Number of Colors
- 24 Show all fonts you have in your system
A quick utility to print out graphic device information
<source lang="java"> /* Java Swing, 2nd Edition By Marc Loy, Robert Eckstein, Dave Wood, James Elliott, Brian Cole ISBN: 0-596-00408-7 Publisher: O"Reilly
- /
// GuiScreens.java //A quick utility to print out graphic device information. Will work on //systems with multiple monitors. // import java.awt.GraphicsConfiguration; import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; import java.awt.Rectangle; import javax.swing.JFrame; import javax.swing.JTextArea; public class GuiScreens {
public static void main(String[] args) { Rectangle virtualBounds = new Rectangle(); GraphicsEnvironment ge = GraphicsEnvironment .getLocalGraphicsEnvironment(); GraphicsDevice[] gs = ge.getScreenDevices(); JFrame frame[][] = new JFrame[gs.length][]; for (int j = 0; j < gs.length; j++) { GraphicsDevice gd = gs[j]; System.out.println("Device " + j + ": " + gd); GraphicsConfiguration[] gc = gd.getConfigurations(); frame[j] = new JFrame[gc.length]; for (int i = 0; i < gc.length; i++) { System.out.println(" Configuration " + i + ": " + gc[i]); System.out.println(" Bounds: " + gc[i].getBounds()); virtualBounds = virtualBounds.union(gc[i].getBounds()); frame[j][i] = new JFrame("Config: " + i, gc[i]); frame[j][i].setBounds(50, 50, 400, 100); frame[j][i].setLocation((int) gc[i].getBounds().getX() + 50, (int) gc[i].getBounds().getY() + 50); frame[j][i].getContentPane().add( new JTextArea("Config:\n" + gc[i])); frame[j][i].setVisible(true); } System.out.println("Overall bounds: " + virtualBounds); } }
}
</source>
Create an image that does not support transparency from GraphicsConfiguration
<source lang="java"> import java.awt.GraphicsConfiguration; import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; import java.awt.Transparency; import java.awt.image.BufferedImage; public class Main {
public static void main(String[] argv) throws Exception { GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice gs = ge.getDefaultScreenDevice(); GraphicsConfiguration gc = gs.getDefaultConfiguration();
BufferedImage bimage = gc.createCompatibleImage(100, 100, Transparency.OPAQUE); }
}
</source>
Create an image that supports arbitrary levels of transparency from GraphicsConfiguration
<source lang="java"> import java.awt.GraphicsConfiguration; import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; import java.awt.Transparency; import java.awt.image.BufferedImage; public class Main {
public static void main(String[] argv) throws Exception { GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice gs = ge.getDefaultScreenDevice(); GraphicsConfiguration gc = gs.getDefaultConfiguration(); BufferedImage bimage = gc.createCompatibleImage(100, 100, Transparency.TRANSLUCENT); }
}
</source>
Create an image that supports transparent pixels from GraphicsConfiguration
<source lang="java"> import java.awt.GraphicsConfiguration; import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; import java.awt.Transparency; import java.awt.image.BufferedImage; public class Main {
public static void main(String[] argv) throws Exception { GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice gs = ge.getDefaultScreenDevice(); GraphicsConfiguration gc = gs.getDefaultConfiguration(); BufferedImage bimage = gc.createCompatibleImage(100, 100, Transparency.BITMASK); }
}
</source>
Create buffered images that are compatible with the screen
<source lang="java">
import java.awt.GraphicsConfiguration; import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; import java.awt.Transparency; import java.awt.image.BufferedImage; public class Main {
public static void main(String[] argv) throws Exception { GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice gs = ge.getDefaultScreenDevice(); GraphicsConfiguration gc = gs.getDefaultConfiguration(); // Create an image that does not support transparency BufferedImage bimage = gc.createCompatibleImage(100, 100, Transparency.OPAQUE); }
}
</source>
Determine if full-screen mode is supported directly
<source lang="java"> import java.awt.BorderLayout; import java.awt.Button; import java.awt.Frame; import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; import java.awt.Window; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class Main {
public static void main(String[] argv) throws Exception { GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice gs = ge.getDefaultScreenDevice(); if (gs.isFullScreenSupported()) { // Full-screen mode is supported } else { // Full-screen mode will be simulated } }
}
</source>
Enter full screen mode
<source lang="java"> import java.awt.BorderLayout; import java.awt.Button; import java.awt.Frame; import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; import java.awt.Window; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class Main {
public static void main(String[] argv) throws Exception { GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice gs = ge.getDefaultScreenDevice(); Button btn = new Button("OK"); btn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice gs = ge.getDefaultScreenDevice(); gs.setFullScreenWindow(null); } }); Frame frame = new Frame(gs.getDefaultConfiguration()); Window win = new Window(frame); win.add(btn, BorderLayout.CENTER); try { gs.setFullScreenWindow(win); win.validate(); } finally { gs.setFullScreenWindow(null); } }
}
</source>
Get the available font family names
<source lang="java">
import java.awt.GraphicsEnvironment; public class Main {
public static void main(String[] args) { GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); String familyNames[] = ge.getAvailableFontFamilyNames(); for (String familyName : familyNames) { System.out.println("Family names: " + familyName); } }
}
</source>
Get the available font names
<source lang="java">
import java.awt.Font; import java.awt.GraphicsEnvironment; public class Main {
public static void main(String[] args) { GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); Font[] fonts = ge.getAllFonts(); for (Font font : fonts) { String fontName = font.getName(); String familyName = font.getFamily(); System.out.println("Font: " + fontName + "; family: " + familyName); } }
}
</source>
Get the GraphicsEnvironment and GraphicsDevice
<source lang="java"> import java.awt.GraphicsConfiguration; import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; public class ShowConfigurations {
public static void main(String[] args) { GraphicsEnvironment ge = GraphicsEnvironment .getLocalGraphicsEnvironment(); GraphicsDevice defaultScreen = ge.getDefaultScreenDevice(); GraphicsConfiguration[] configurations = defaultScreen .getConfigurations(); System.out.println("Default screen device: " + defaultScreen.getIDstring()); for (int i = 0; i < configurations.length; i++) { System.out.println(" Configuration " + (i + 1)); System.out.println(" " + configurations[i].getColorModel()); } System.exit(0); }
}
</source>
Getting Amount of Free Accelerated Image Memory
<source lang="java"> import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; import java.awt.image.VolatileImage; public class Main {
public static void main(String[] argv) throws Exception { GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice[] gs = ge.getScreenDevices(); for (int i = 0; i < gs.length; i++) { VolatileImage im = gs[i].getDefaultConfiguration() .createCompatibleVolatileImage(1, 1); int bytes = gs[i].getAvailableAcceleratedMemory(); if (bytes < 0) { System.out.println("Amount of memory is unlimited"); } im.flush(); } }
}
</source>
Getting Number of Colors
<source lang="java"> import java.awt.DisplayMode; import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; public class Main {
public static void main(String[] argv) throws Exception { GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice gs = ge.getDefaultScreenDevice(); DisplayMode[] dmodes = gs.getDisplayModes(); for (int i = 0; i < dmodes.length; i++) { int refreshRate = dmodes[i].getRefreshRate(); } }
}
</source>
Getting Refresh Rates
<source lang="java"> import java.awt.DisplayMode; import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; public class Main {
public static void main(String[] argv) throws Exception { GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice gs = ge.getDefaultScreenDevice(); DisplayMode[] dmodes = gs.getDisplayModes(); for (int i = 0; i < dmodes.length; i++) { int bitDepth = dmodes[i].getBitDepth(); } }
}
</source>
Getting Screen Sizes
<source lang="java"> import java.awt.DisplayMode; import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; public class Main {
public static void main(String[] argv) throws Exception { GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice gs = ge.getDefaultScreenDevice(); DisplayMode[] dmodes = gs.getDisplayModes(); for (int i = 0; i < dmodes.length; i++) { int screenWidth = dmodes[i].getWidth(); int screenHeight = dmodes[i].getHeight(); } }
}
</source>
Getting the Current Screen Refresh Rate and Number of Colors
<source lang="java"> import java.awt.DisplayMode; import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; public class Main {
public static void main(String[] argv) throws Exception { GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice[] gs = ge.getScreenDevices(); for (int i = 0; i < gs.length; i++) { DisplayMode dm = gs[i].getDisplayMode(); int refreshRate = dm.getRefreshRate(); if (refreshRate == DisplayMode.REFRESH_RATE_UNKNOWN) { System.out.println("Unknown rate"); } int bitDepth = dm.getBitDepth(); int numColors = (int) Math.pow(2, bitDepth); } }
}
</source>
Getting the Font Faces for a Font Family
<source lang="java"> import java.awt.Font; import java.awt.GraphicsEnvironment; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class Main {
public static void main(String[] argv) throws Exception { Map<String, List<String>> fontFaceNames = new HashMap<String, List<String>>(); GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); Font[] fonts = ge.getAllFonts(); for (int i = 0; i < fonts.length; i++) { String familyName = fonts[i].getFamily(); String faceName = fonts[i].getName(); List<String> list = fontFaceNames.get(familyName); if (list == null) { list = new ArrayList<String>(); fontFaceNames.put(familyName, list); } list.add(faceName); } System.out.println(fontFaceNames); }
}
</source>
Getting the Number of Screens
<source lang="java"> import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; import java.awt.HeadlessException; public class Main {
public static void main(String[] argv) throws Exception { GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); try { GraphicsDevice[] gs = ge.getScreenDevices(); int numScreens = gs.length; } catch (HeadlessException e) { } }
}
</source>
If more than one screen is available, gets the size of each screen
<source lang="java"> import java.awt.DisplayMode; import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; public class Main {
public static void main(String[] argv) throws Exception { GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice[] gs = ge.getScreenDevices(); for (int i = 0; i < gs.length; i++) { DisplayMode dm = gs[i].getDisplayMode(); int screenWidth = dm.getWidth(); int screenHeight = dm.getHeight(); } }
}
</source>
Leave full-screen mode (Return to normal windowed mode)
<source lang="java"> import java.awt.BorderLayout; import java.awt.Button; import java.awt.Frame; import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; import java.awt.Window; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class Main {
public static void main(String[] argv) throws Exception { GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice gs = ge.getDefaultScreenDevice(); gs.setFullScreenWindow(null); }
}
</source>
List all available fonts in the system
<source lang="java"> import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.GraphicsEnvironment; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.util.Vector; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class AllAvailableFontsComboBox extends JPanel {
JComboBox fonts; public AllAvailableFontsComboBox() { add(new JLabel("Fonts")); GraphicsEnvironment gEnv = GraphicsEnvironment .getLocalGraphicsEnvironment(); String envfonts[] = gEnv.getAvailableFontFamilyNames(); Vector vector = new Vector(); for (int i = 1; i < envfonts.length; i++) { vector.addElement(envfonts[i]); } fonts = new JComboBox(vector); add(fonts); } public static void main(String s[]) { JFrame f = new JFrame("FontSelection"); f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); AllAvailableFontsComboBox fontSelection = new AllAvailableFontsComboBox(); f.getContentPane().add(fontSelection, BorderLayout.CENTER); f.setSize(new Dimension(350, 250)); f.setVisible(true); }
}
</source>
Listing All Available Font Families
<source lang="java">
import java.awt.GraphicsEnvironment; public class Main {
public static void main(String[] argv) throws Exception { GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); String fontNames[] = ge.getAvailableFontFamilyNames(); for (int i = 0; i < fontNames.length; i++) { System.out.println(fontNames[i]); } }
}
</source>
Retrieve and print the graphic device information
<source lang="java"> import java.awt.GraphicsConfiguration; import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; public class Main {
public static void main(String[] args) { GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice[] gs = ge.getScreenDevices(); for (int j = 0; j < gs.length; j++) { GraphicsDevice gd = gs[j]; System.out.println("Device " + j + ": " + gd); GraphicsConfiguration[] gc = gd.getConfigurations(); for (int i = 0; i < gc.length; i++) { System.out.println(gc[i]); System.out.println(gc[i].getBounds()); } } }
}
</source>
Setting the Screen Size, Refresh Rate, or Number of Colors
<source lang="java"> import java.awt.DisplayMode; import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; public class Main {
public static void main(String[] argv) throws Exception { GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice gs = ge.getDefaultScreenDevice(); boolean canChg = gs.isDisplayChangeSupported(); if (canChg) { DisplayMode displayMode = gs.getDisplayMode(); int screenWidth = 640; int screenHeight = 480; int bitDepth = 8; displayMode = new DisplayMode(screenWidth, screenHeight, bitDepth, displayMode .getRefreshRate()); try { gs.setDisplayMode(displayMode); } catch (Throwable e) { gs.setFullScreenWindow(null); } } }
}
</source>
Show all fonts you have in your system
<source lang="java"> import java.awt.Font; import java.awt.GraphicsEnvironment; public class ShowFonts {
public static void main(String[] args) { Font[] fonts; fonts = GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts(); for (int i = 0; i < fonts.length; i++) { System.out.print(fonts[i].getFontName() + " : "); System.out.print(fonts[i].getFamily() + " : "); System.out.print(fonts[i].getName()); System.out.println(); } }
}
</source>