实验四 Java图形界面与事件处理(头歌)
制作不易!点个关注!给大家带来更多的价值!
代码如下:
import javax. swing. * ;
import java. awt. * ;
import java. awt. event. ActionEvent ;
import java. awt. event. ActionListener ;
import java. awt. event. ItemEvent ;
import java. awt. event. ItemListener ;
public class ArtFont extends JFrame implements ActionListener , ItemListener { JComboBox fontType; JComboBox fontSize; JComboBox windowStyle; JCheckBox boldBx; JCheckBox italicBx; JButton colorBtn; String [ ] fontNames; String [ ] fontSizes; JLabel label; JTextField inputText; JTextArea txtArea; JPanel northPanel; JPanel centerPanel; JPanel southPanel; Font font; int boldStyle, italicStyle, underlineStyle; int fontSizeStyle; String fontNameStyle; Color colorStyle = Color . black; String [ ] style = { "默认显示效果" , "Windows显示效果" , "Unix显示效果" } ; public ArtFont ( ) { super ( "字体设置" ) ; boldStyle = 0 ; italicStyle = 0 ; underlineStyle = 0 ; fontSizeStyle = 10 ; fontNameStyle = "宋体" ; font = new Font ( fontNameStyle, boldStyle + italicStyle, fontSizeStyle) ; northPanel = getNorthPanel ( ) ; centerPanel = getCenterPanel ( ) ; southPanel = getSouthPanel ( ) ; Container container = getContentPane ( ) ; container. setLayout ( new BorderLayout ( ) ) ; container. add ( northPanel, BorderLayout . NORTH ) ; container. add ( centerPanel, BorderLayout . CENTER ) ; container. add ( southPanel, BorderLayout . SOUTH ) ; setSize ( 500 , 300 ) ; this . setLocationRelativeTo ( null ) ; setVisible ( true ) ; } private JPanel getNorthPanel ( ) { JPanel panel = new JPanel ( ) ; label = new JLabel ( "输入" ) ; inputText = new JTextField ( 10 ) ; boldBx = new JCheckBox ( "粗体" ) ; italicBx = new JCheckBox ( "斜体" ) ; colorBtn = new JButton ( "颜色" ) ; panel. add ( label) ; panel. add ( inputText) ; panel. add ( boldBx) ; panel. add ( italicBx) ; panel. add ( colorBtn) ; JTextArea textArea= new JTextArea ( "计xxxx xxxxxxxx xx" ) ; inputText. addActionListener ( this ) ; colorBtn. addActionListener ( this ) ; boldBx. addItemListener ( this ) ; italicBx. addItemListener ( this ) ; panel. add ( textArea) ; return panel; } private JPanel getCenterPanel ( ) { JPanel panel = new JPanel ( ) ; txtArea = new JTextArea ( ) ; panel. setLayout ( new BorderLayout ( ) ) ; panel. add ( new JScrollPane ( txtArea) , BorderLayout . CENTER ) ; return panel; } private JPanel getSouthPanel ( ) { JPanel panel = new JPanel ( ) ; GraphicsEnvironment ge = GraphicsEnvironment . getLocalGraphicsEnvironment ( ) ; fontNames = ge. getAvailableFontFamilyNames ( ) ; fontType = new JComboBox ( fontNames) ; fontSizes = new String [ 63 ] ; for ( int i = 0 ; i < fontSizes. length; i++ ) { fontSizes[ i] = Integer . toString ( i+ 10 ) ; } fontSize = new JComboBox ( fontSizes) ; windowStyle = new JComboBox ( style) ; panel. add ( fontType) ; panel. add ( fontSize) ; panel. add ( windowStyle) ; fontType. addItemListener ( this ) ; fontSize. addItemListener ( this ) ; windowStyle. addItemListener ( this ) ; return panel; } public static void main ( String args[ ] ) { ArtFont artFont = new ArtFont ( ) ; artFont. setDefaultCloseOperation ( JFrame . EXIT_ON_CLOSE ) ; } @Override public void actionPerformed ( ActionEvent e) { if ( e. getSource ( ) == inputText) { txtArea. setText ( inputText. getText ( ) ) ; } else if ( e. getSource ( ) == colorBtn) { colorStyle= JColorChooser . showDialog ( this , "请选择一种颜色" , colorStyle) ; colorBtn. setForeground ( colorStyle) ; txtArea. setForeground ( colorStyle) ; } } @Override public void itemStateChanged ( ItemEvent e) { if ( e. getSource ( ) == boldBx) { if ( boldBx. isSelected ( ) ) { boldStyle= Font . BOLD ; } else { boldStyle= Font . PLAIN ; } } else if ( e. getSource ( ) == italicBx) { if ( italicBx. isSelected ( ) ) { italicStyle= Font . ITALIC ; } else { italicStyle= Font . PLAIN ; } } else if ( e. getSource ( ) == fontType) { fontNameStyle= ( String ) e. getItem ( ) ; } else if ( e. getSource ( ) == fontSize) { fontSizeStyle= Integer . parseInt ( ( String ) e. getItem ( ) ) ; } else if ( e. getSource ( ) == windowStyle) { String s = ( String ) e. getItem ( ) ; String className = "" ; if ( s. equals ( "Windows显示效果" ) ) className = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel" ; else if ( s. equals ( "Unix显示效果" ) ) className = "com.sun.java.swing.plaf.motif.MotifLookAndFeel" ; else if ( s. equals ( "默认显示效果" ) ) className = UIManager . getCrossPlatformLookAndFeelClassName ( ) ; try { UIManager . setLookAndFeel ( className) ; SwingUtilities . updateComponentTreeUI ( this ) ; } catch ( Exception de) { System . out. println ( "Exception happened!" ) ; } } font = new Font ( fontNameStyle, boldStyle + italicStyle, fontSizeStyle) ; txtArea. setFont ( font) ; } }