文档库 最新最全的文档下载
当前位置:文档库 › 南昌大学java实验报告3

南昌大学java实验报告3

南昌大学实验报告

学生姓名:学号: 5 专业班级:网络工程091

实验类型:□验证□综合□设计□创新实验日期:2012.5.18 实验成绩:

实验三设计一个文字字体设计窗体

一、实验目的

设计一个文字字体设计窗体,在该窗体中可以设置要显示文字的字体内容,包括字体名称、字体大小、粗体和斜体等字体风格。

二、实验要求

写出完整的可以实现的程序,并要求测试成功

三、实验原理

获取本地计算机字体名称的方法:

GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment(); fontNames=ge.getAvailableFontFamilyNames();//获得系统中所有字体的名字;

颜色按钮和输入框回车的动作事件处理函数模板:

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());

}

四、实验步骤

设计思想:本实验需建立三个label标签,字体组合框,大小组合框,粗体、斜体复选框,颜色设置按钮,文本输入框和文本输入域。采用三个面板,第一个面板设置字体、字体大小,粗体、斜体复选框以及颜色按钮;第二个面板放输入框标签和文本输入框;第三个面

板采用边界布局容纳第一和第二个面板。用一个滚动面板来放文本域。

实验设计代码如下所示:

package setFont;

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class SetFont extends JFrame implements ActionListener{ JComboBox fontType,fontSize;

Checkbox boldBx;//粗体按钮

Checkbox italicBx;//斜体按钮

JButton colorBtn;//颜色按钮;

String[] fontNames;//字体名称;

String[] fontSizes;//字体尺寸;

JLabel label;//输入提示标签;

JTextField inputText;//文字输入框;

JTextArea textArea;//文字显示区;

JPanel fontPanel;//字体设置;

JPanel showPanel;//显示效果区

Font font;

int boldStyle,italicStyle,underlineStyle;

int fontSizeStyle;

String fontNameStyle;

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

public SetFont() {

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){

//实现监听字体名字改变的事件

fontNameStyle=(String)fontType.getSelectedItem();

font=new

Font(fontNameStyle,boldStyle+italicStyle,fontSizeStyle);

textArea.setFont(font);

textArea.setForeground(colorStyle);

}

});

//设置字体大小

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);

fontSize.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e){

//实现监听字体大小改变的方法

fontSizeStyle=Integer.parseInt((String)fontSize.getSelectedItem() );

font=new

Font(fontNameStyle,boldStyle+italicStyle,fontSizeStyle);

textArea.setFont(font);

textArea.setForeground(colorStyle);

}

});

//设置粗体选择按钮;

boldBx=new Checkbox("粗体");

boldBx.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e){

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

if(boldBx.getState())

boldStyle=Font.BOLD;

else

boldStyle=0;

font=new

Font(fontNameStyle,boldStyle+italicStyle,fontSizeStyle);

textArea.setFont(font);

textArea.setForeground(colorStyle);

}

});

//设置斜体选择按钮;

italicBx=new Checkbox("斜体");

italicBx.addItemListener(new ItemListener(){

public void itemStateChanged(ItemEvent e){

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

if(italicBx.getState())

italicStyle=Font.BOLD;

else

italicStyle=0;

font=new

Font(fontNameStyle,boldStyle+italicStyle,fontSizeStyle);

textArea.setFont(font);

textArea.setForeground(colorStyle);

}

});

//设置颜色选择;

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);

//设置文本显示区;

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

textArea.setFont(font);

//设置文本面板;

showPanel=new JPanel();

showPanel.add(label);

showPanel.add(inputText);

showPanel.setLayout(new FlowLayout());

showPanel.add(new JScrollPane(textArea));

//设置容器;

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);

textArea.setForeground(colorStyle);

}

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

textArea.setText(inputText.getText());

}

}

public static void main(String args[]){

SetFont artFont=new SetFont();

artFont.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}

五、实验结果

六、思考题

进一步改进任务:

在上述的基础上,同时可以选择显示外观的字体选择窗体。

答:显示观感按钮的代码:

public void actionPerformed(ActionEvent e){

if(e.getSource()==button1){ //显示Windows观感

showFeelAndLook("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");

}else if(e.getSource()==button2){ //显示Unix观感

showFeelAndLook("com.sun.java.swing.plaf.motif.MotifLookAndFeel");

}

try{

UIManager.setLookAndFeel(lookValue); //按指定名设置观感

SwingUtilities.updateComponentTreeUI(this); //修改组件观感}catch(Exception e){

JOptionPane.showMessageDialog(null,this,"修改观感失败",JOptionPane.ERROR_MESSAGE);

}

}

效果展示:

七、实验心得

通过本次实验我对图形用户界面的设计有了更深入的了解,尤其是对组件的外观设计思想有了更深入的认知。组件都是矩形形状的,且它本身也有一个坐标系,组件左上角的坐标为原点(0,0)。我们可以对组件的外观进行控制,包括组件的前景色、背景色以及字体的大小、样式等。要使用颜色则可使用Color类,Font类表示字体,可以用它以可见方式呈现文本。

相关文档