📄 font2dtest.java
字号:
/// Parse all options boolean displayGridOpt = new Boolean( perLine.nextToken() ).booleanValue(); boolean force16ColsOpt = new Boolean( perLine.nextToken() ).booleanValue(); boolean showFontInfoOpt = new Boolean( perLine.nextToken() ).booleanValue(); String rangeNameOpt = perLine.nextToken(); int rangeStartOpt = Integer.parseInt( perLine.nextToken() ); int rangeEndOpt = Integer.parseInt( perLine.nextToken() ); String fontNameOpt = perLine.nextToken(); int fontSizeOpt = Integer.parseInt( perLine.nextToken() ); int fontStyleOpt = Integer.parseInt( perLine.nextToken() ); int fontTransformOpt = Integer.parseInt( perLine.nextToken() ); int g2TransformOpt = Integer.parseInt( perLine.nextToken() ); int textToUseOpt = Integer.parseInt( perLine.nextToken() ); int drawMethodOpt = Integer.parseInt( perLine.nextToken() ); boolean useAntialiasOpt = new Boolean( perLine.nextToken() ).booleanValue(); boolean useFractionalOpt = new Boolean( perLine.nextToken() ).booleanValue(); String userTextOpt[] = { "Java2D!" }, dialogEntry = "Java2D!"; if (textToUseOpt == fp.USER_TEXT ) { int numLines = perLine.countTokens(), lineNumber = 0; if ( numLines != 0 ) { userTextOpt = new String[ numLines ]; dialogEntry = ""; for ( ; perLine.hasMoreElements(); lineNumber++ ) { userTextOpt[ lineNumber ] = perLine.nextToken(); dialogEntry += userTextOpt[ lineNumber ] + "\n"; } } } /// Reset GUIs displayGridCBMI.setState( displayGridOpt ); force16ColsCBMI.setState( force16ColsOpt ); showFontInfoCBMI.setState( showFontInfoOpt ); rm.setSelectedRange( rangeNameOpt, rangeStartOpt, rangeEndOpt ); fontMenu.setSelectedItem( fontNameOpt ); sizeField.setText( String.valueOf( fontSizeOpt )); styleMenu.setSelectedIndex( fontStyleOpt ); transformMenu.setSelectedIndex( fontTransformOpt ); transformMenuG2.setSelectedIndex( g2TransformOpt ); textMenu.setSelectedIndex( textToUseOpt ); methodsMenu.setSelectedIndex( drawMethodOpt ); useAntialiasCB.setSelected( useAntialiasOpt ); useFractionalCB.setSelected( useFractionalOpt ); userTextArea.setText( dialogEntry ); updateGUI(); if ( textToUseOpt == fp.FILE_TEXT ) { tFileName = perLine.nextToken(); readTextFile(tFileName ); } /// Reset option variables and repaint fp.loadOptions( displayGridOpt, force16ColsOpt, rangeStartOpt, rangeEndOpt, fontNameOpt, fontSizeOpt, fontStyleOpt, fontTransformOpt, g2TransformOpt, textToUseOpt, drawMethodOpt, useAntialiasOpt, useFractionalOpt, userTextOpt ); if ( showFontInfoOpt ) { fireUpdateFontInfo(); fontInfoDialog.show(); } else fontInfoDialog.hide(); } catch ( Exception ex ) { fireChangeStatus( "ERROR: Failed to Load Options File; See Stack Trace", true ); ex.printStackTrace(); } } /// Loads a previously saved image private void loadComparisonJPEG( String fileName ) { try { BufferedInputStream bis = new BufferedInputStream( new FileInputStream( fileName )); JPEGImageDecoder jid = JPEGCodec.createJPEGDecoder( bis ); BufferedImage image = jid.decodeAsBufferedImage(); bis.close(); JFrame f = new JFrame( "Comparison JPEG" ); ImagePanel ip = new ImagePanel( image ); f.setResizable( false ); f.getContentPane().add( ip ); f.addWindowListener( new WindowAdapter() { public void windowClosing( WindowEvent e ) { ( (JFrame) e.getSource() ).dispose(); } }); f.pack(); f.show(); } catch ( Exception ex ) { fireChangeStatus( "ERROR: Failed to Load JPEG File; See Stack Trace", true ); ex.printStackTrace(); } } /// Interface functions... /// ActionListener interface function /// Responds to JMenuItem, JTextField and JButton actions public void actionPerformed( ActionEvent e ) { Object source = e.getSource(); if ( source instanceof JMenuItem ) { JMenuItem mi = (JMenuItem) source; String itemName = mi.getLabel(); if ( itemName.equals( "Save Selected Options..." )) { String fileName = promptFile( true, "options.txt" ); if ( fileName != null ) writeCurrentOptions( fileName ); } else if ( itemName.equals( "Load Options..." )) { String fileName = promptFile( false, "options.txt" ); if ( fileName != null ) loadOptions( fileName ); } else if ( itemName.equals( "Save as JPEG..." )) { String fileName = promptFile( true, fontMenu.getSelectedItem() + ".jpeg" ); if ( fileName != null ) fp.doSaveJPEG( fileName ); } else if ( itemName.equals( "Load JPEG File to Compare..." )) { String fileName = promptFile( false, null ); if ( fileName != null ) loadComparisonJPEG( fileName ); } else if ( itemName.equals( "Page Setup..." )) fp.doPageSetup(); else if ( itemName.equals( "Print..." )) printDialog.show(); else if ( itemName.equals( "Close" )) parent.dispose(); else if ( itemName.equals( "Exit" )) System.exit(0); } else if ( source instanceof JTextField ) { JTextField tf = (JTextField) source; int sz = 12; try { sz = Integer.parseInt(sizeField.getText()); if (sz < 1 || sz > 120) { sz = 12; sizeField.setText("12"); } } catch (Exception se) { sizeField.setText("12"); } if ( tf == sizeField ) fp.setFontParams( fontMenu.getSelectedItem(), sz, styleMenu.getSelectedIndex(), transformMenu.getSelectedIndex() ); } else if ( source instanceof JButton ) { String itemName = ( (JButton) source ).getLabel(); /// Print dialog buttons... if ( itemName.equals( "Print" )) { for ( int i = 0; i < printModeCBs.length; i++ ) if ( printModeCBs[i].isSelected() ) { printDialog.hide(); fp.doPrint( i ); } } else if ( itemName.equals( "Cancel" )) printDialog.hide(); /// Update button from Usert Text JDialog... else if ( itemName.equals( "Update" )) fp.setTextToDraw( fp.USER_TEXT, null, parseUserText( userTextArea.getText() ), null ); } else if ( source instanceof JComboBox ) { JComboBox c = (JComboBox) source; /// RangeMenu handles actions by itself and then calls fireRangeChanged, /// so it is not listed or handled here if ( c == fontMenu || c == styleMenu || c == transformMenu ) fp.setFontParams( fontMenu.getSelectedItem(), Integer.parseInt(sizeField.getText()), styleMenu.getSelectedIndex(), transformMenu.getSelectedIndex() ); else if ( c == methodsMenu ) fp.setDrawMethod( methodsMenu.getSelectedIndex() ); else if ( c == textMenu ) { int selected = textMenu.getSelectedIndex(); if ( selected == fp.RANGE_TEXT ) fp.setTextToDraw( fp.RANGE_TEXT, rm.getSelectedRange(), null, null ); else if ( selected == fp.USER_TEXT ) fp.setTextToDraw( fp.USER_TEXT, null, parseUserText( userTextArea.getText() ), null ); else if ( selected == fp.FILE_TEXT ) { String fileName = promptFile( false, null ); if ( fileName != null ) { tFileName = fileName; readTextFile( fileName ); } else { /// User cancelled selection; reset to previous choice c.setSelectedIndex( currentTextChoice ); return; } } else if ( selected == fp.ALL_GLYPHS ) fp.setTextToDraw( fp.ALL_GLYPHS, null, null, null ); updateGUI(); currentTextChoice = selected; } else if ( c == transformMenuG2 ) { fp.setTransformG2( transformMenuG2.getSelectedIndex() ); } } } /// ItemListener interface function /// Responds to JCheckBoxMenuItem, JComboBox and JCheckBox actions public void itemStateChanged( ItemEvent e ) { Object source = e.getSource(); if ( source instanceof JCheckBoxMenuItem ) { JCheckBoxMenuItem cbmi = (JCheckBoxMenuItem) source; if ( cbmi == displayGridCBMI ) fp.setGridDisplay( displayGridCBMI.getState() ); else if ( cbmi == force16ColsCBMI ) fp.setForce16Columns( force16ColsCBMI.getState() ); else if ( cbmi == showFontInfoCBMI ) { if ( showFontInfoCBMI.getState() ) { fireUpdateFontInfo(); fontInfoDialog.show(); } else fontInfoDialog.hide(); } } else if ( source instanceof JCheckBox ) { fp.setRenderingHints( useAntialiasCB.isSelected(), useFractionalCB.isSelected() ); } } /// Main function public static void main(String argv[]) { final JFrame f = new JFrame( "Font2DTest" ); final Font2DTest f2dt = new Font2DTest( f, false ); f.addWindowListener( new WindowAdapter() { public void windowOpening( WindowEvent e ) { f2dt.repaint(); } public void windowClosing( WindowEvent e ) { System.exit(0); } }); f.getContentPane().add( f2dt ); f.pack(); f.show(); } /// Inner class definitions... /// Class to display just an image file /// Used to show the comparison JPEG image private final class ImagePanel extends JPanel { private final BufferedImage bi; public ImagePanel( BufferedImage image ) { bi = image; } public Dimension getPreferredSize() { return new Dimension( bi.getWidth(), bi.getHeight() ); } public void paintComponent( Graphics g ) { g.drawImage( bi, 0, 0, this ); } } /// Classes made to avoid repetitive calls... (being lazy) private final class ButtonV2 extends JButton { public ButtonV2( String name, ActionListener al ) { super( name ); this.setFont( labelFont ); this.addActionListener( al ); } } private final class ChoiceV2 extends JComboBox { public ChoiceV2() {;} public ChoiceV2( ActionListener al ) { super(); this.addActionListener( al ); } } private final class LabelV2 extends JLabel { public LabelV2( String name ) { super( name ); this.setFont( labelFont ); } } private final class MenuItemV2 extends JMenuItem { public MenuItemV2( String name, ActionListener al ) { super( name ); this.addActionListener( al ); } } private final class CheckboxMenuItemV2 extends JCheckBoxMenuItem { public CheckboxMenuItemV2( String name, boolean b, ItemListener il ) { super( name, b ); this.addItemListener( il ); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -