湖北汽车工业学院JAVA程序设计 实验三 Java的GUI编程 实验指导书 联系客服

发布时间 : 星期一 文章湖北汽车工业学院JAVA程序设计 实验三 Java的GUI编程 实验指导书更新完毕开始阅读67788bd37f1922791688e86b

实验三 Java的GUI编程

(一) 开发文字字体设计窗体

【实验目的】

(1) 了解GUI的概念;

(2) 了解java.awt包和javax.swing包,并比较它们具有的同性质的组件的异同; (3) 掌握和运用Java的基本GUI组件,了解他们的特点。

【实验任务】

要求设计一个文字字体设计窗体,在该窗体中可以设置要显示文字的字体内容,包括

字体名称、字体大小、粗体和斜体等字体风格。并模拟在不同操作系统下的显示效果。

【实验内容】

阅读并分析以下程序,将程序中的代码补充完整,编译并运行程序,查看结果。

//ArtFont.java

import javax.swing.*; import java.awt.*; import java.awt.event.*;

public class ArtFont extends JFrame implements ActionListener,ItemListener{ JComboBox fontType,fontSize; JCheckBox boldBx;//粗体按钮 JCheckBox italicBx;//斜体按钮 JButton colorBtn;//颜色按钮; String[] fontNames;//字体名称; String[] fontSizes;//字体尺寸;

JLabel label;//输入提示标签; JTextField inputText;//文字输入框; JTextArea txtArea;//文字显示区; JPanel fontPanel;//字体设置; JPanel showPanel;//显示效果区

Font font;

int boldStyle,italicStyle,underlineStyle; int fontSizeStyle; String fontNameStyle;

Color colorStyle=Color.black;//设置字体的默认颜色为黑色;

String[] style = { \默认显示效果\, \显示效果\, \显示效果\ }; JComboBox styleBtn;

public ArtFont() { super(\字体设置\); //设置默认字体 boldStyle=0; italicStyle=0; underlineStyle=0; fontSizeStyle=10;

fontNameStyle=\宋体\;

font=new Font(fontNameStyle,boldStyle+italicStyle,fontSizeStyle);

fontPanel=new JPanel();

fontPanel.setLayout(new FlowLayout()); //设置字体名字

GraphicsEnvironment

ge=GraphicsEnvironment.getLocalGraphicsEnvironment();

fontNames=ge.getAvailableFontFamilyNames();//获得系统中所有字体的名字; fontType=new JComboBox(fontNames); fontType.setEditable(false); fontType.setMaximumRowCount(10);

fontType.addItemListener(new ItemListener(){ public void itemStateChanged(ItemEvent e){ //实现监听字体名字改变的事件

String item=(String) e.getItem(); System.out.println(item); fontNameStyle= item; font=new

Font(fontNameStyle,boldStyle+italicStyle,fontSizeStyle); txtArea. 代码1 ; //设置显示区字体 } });

//设置字体大小

fontSizes=new String[63]; for(int i=0;i<63;i++){

fontSizes[i]=Integer.toString((i+10)); }

fontSize=new JComboBox(fontSizes); fontSize.setEditable(false);

fontSize.setMaximumRowCount(10); // 设置 JComboBox 显示的最大行数。 fontSize.addItemListener(new ItemListener(){ public void itemStateChanged(ItemEvent e){ //实现监听字体大小改变的方法

String size=(String)e.getItem(); fontSizeStyle=Integer.parseInt(size); font=new

Font(fontNameStyle,boldStyle+italicStyle,fontSizeStyle); txtArea.setFont(font); } });

//设置粗体选择按钮;

boldBx=new JCheckBox(\粗体\);

boldBx.addItemListener(new ItemListener(){ public void itemStateChanged(ItemEvent e){

//实现监听选择粗体状态改变的方法

if(e.getSource()==boldBx&&e.getStateChange()==e.SELECTED){ boldStyle= 代码2 ; //设置字体为粗体

font=new Font(fontNameStyle,boldStyle+italicStyle,fontSizeStyle); txtArea.setFont(font); } } });

//设置斜体选择按钮;

italicBx=new JCheckBox(\斜体\);

italicBx.addItemListener(new ItemListener(){ public void itemStateChanged(ItemEvent e){

//实现监听选择斜体状态改变的方法

if(e.getSource()==italicBx&&e.getStateChange()==e.SELECTED){ italicStyle= 代码3 ; //设置字体为斜体

font=new Font(fontNameStyle,boldStyle+italicStyle,fontSizeStyle); txtArea.setFont(font); } } });

//设置颜色选择;

colorBtn=new JButton(\颜色\);

colorBtn.addActionListener(this); //设置字体面板;

fontPanel.add(fontType); fontPanel.add(fontSize); fontPanel.add(boldBx); fontPanel.add(italicBx); fontPanel.add(colorBtn);

//设置输入提示标签

label=new JLabel(\输入\);

//设置文本输入框;

inputText=new JTextField(30); inputText.addActionListener(this); //设置文本显示区;

txtArea=new JTextArea(10,80);//20行80列;

txtArea.setFont(font);

//设置窗口的样式;

styleBtn=new JComboBox(style); styleBtn.addItemListener(this);

//设置文本面板;

showPanel=new JPanel(); showPanel.add(label); showPanel.add(inputText);

showPanel.setLayout(new FlowLayout());

showPanel.add(new JScrollPane(txtArea));

showPanel.add(styleBtn);

//设置容器;

Container container=getContentPane(); container.setLayout(new BorderLayout()); container.add(fontPanel,BorderLayout.NORTH); container.add(showPanel,BorderLayout.CENTER); setSize(500,300); setVisible(true); }

public void actionPerformed(ActionEvent e){ if(e.getSource()==colorBtn){//改变颜色

colorStyle=JColorChooser.showDialog(this,\选择字体颜色\,colorStyle);

colorBtn.setForeground(colorStyle); txtArea.setForeground(colorStyle); }

else if(e.getSource()==inputText){//将输入文字在文字显示区表示; txtArea.setText(inputText.getText()); } }

public void itemStateChanged(ItemEvent e) {

String s = (String) e.getItem(); String className = \;

if (s.equals(\显示效果\))