实训要求:
编写一个主窗体,该窗体有“设置字体”按钮和一个文本区。
编写一个JDialog的子类; FontDialog,其中使用下拉列表显示全部
字体的名称,当选择下拉列表中某个字体名称后。FontDialog 中使用标签
显示该字体的效果。
在主窗体中点击“设置字体”按钮时弹出FontDialog 对话框。
在FontDialg 对话框中选择完字体,点击确认按钮后返回主窗体并完
成主窗体中文本的字体设置。
参考结果:
编写一个主窗体,该窗体有“设置字体”按钮和一个文本区。
编写一个JDialog的子类; FontDialog,其中使用下拉列表显示全部
字体的名称,当选择下拉列表中某个字体名称后。FontDialog 中使用标签
显示该字体的效果。
在主窗体中点击“设置字体”按钮时弹出FontDialog 对话框。
在FontDialg 对话框中选择完字体,点击确认按钮后返回主窗体并完
成主窗体中文本的字体设置。
参考结果:
代码:
Ziti.java
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dialog;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.*;
public class Ziti extends JFrame {
JButton b;
JComboBox fontName;
JTextArea area;
FontDialog fd = new FontDialog();
String[] fontArr;
String strArr1 = "睿亚训Java课程实验指导书(第二版)";
public static void main(String[] args) {
Ziti frame = new Ziti();
frame.setBounds(600, 250, 800, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setTitle("设置字体");
frame.setVisible(true);
}
Ziti() {
fd.ziti = this;
area = new JTextArea(5, 10);
setLayout(new BorderLayout());
b = new JButton("设置字体");
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("设置字体")) {
fd.setVisible(true);
}
}
});
area.setText(strArr1);
add(b, BorderLayout.NORTH);
add(new JScrollPane(area));
}
void setArea(Font font) {
area.setFont(font);
}
}
FontDialog.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class FontDialog extends JDialog implements ItemListener {
JComboBox fontName;
JTextArea txtContent;
Font font1;
JButton yes, no;
final String[] fontArr;
final String strArr = " Hello 奥运";
Ziti ziti;
public FontDialog() {
txtContent = new JTextArea();
txtContent.setText(strArr);
JScrollPane jsp = new JScrollPane(txtContent);
GraphicsEnvironment env = GraphicsEnvironment
.getLocalGraphicsEnvironment();
fontArr = env.getAvailableFontFamilyNames();
fontName = new JComboBox(fontArr);
fontName.addItemListener(this);
fontName.setSelectedItem("宋体");
FlowLayout layout = new FlowLayout(FlowLayout.CENTER, 40, 5);
JPanel pan = new JPanel(layout);
pan.add(fontName);
Container c = this.getContentPane();
yes = new JButton("确定");
no = new JButton("取消");
yes.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("确定")) {
ziti.setArea(font1);
setVisible(false);
}
}
});
no.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("取消")) {
setVisible(false);
}
}
});
JPanel pan2 = new JPanel(layout);
pan2.add(yes);
pan2.add(no);
c.add(pan, BorderLayout.NORTH);
c.add(jsp, BorderLayout.CENTER);
c.add(pan2, BorderLayout.SOUTH);
this.setBounds(600, 260, 400, 300);
this.setResizable(false);
this.setVisible(false);
}
public void itemStateChanged(ItemEvent e) {
String s = (String) fontName.getSelectedItem();
font1 = new Font(s, Font.PLAIN, 55);
txtContent.setFont(font1);
}
}
运行结果: