import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class FontTest implements ActionListener {
private JFrame frame;
private JComboBox jcb;
private JRadioButton jrb1,jrb2,jrb3;
private JPanel jp;
private JLabel text;
public FontTest(){
//容器
frame=new JFrame("字體測試");
frame.setSize(400, 300);
frame.setBackground(Color.GRAY);
//面板
jp=new JPanel();
jp.setPreferredSize(new Dimension(400,300));
frame.setContentPane(jp);
//默認字體
Font font=new Font("宋體", Font.PLAIN, 16);
//字大小
jcb=new JComboBox();
jcb.setToolTipText("選擇字體大小");
jcb.addItem("16");
jcb.addItem("18");
jcb.addItem("20");
jcb.addActionListener(this);
jcb.setPreferredSize(new Dimension(300,30));
jp.add(jcb);
//字風格
jrb1=new JRadioButton("PLAIN:普通",true);
jrb2=new JRadioButton("BOLD:加粗",false);
jrb3=new JRadioButton("ITALIC:傾斜",false);
jrb1.setPreferredSize(new Dimension(300,25));
jrb2.setPreferredSize(new Dimension(300,25));
jrb3.setPreferredSize(new Dimension(300,25));
jrb1.addActionListener(this);
jrb2.addActionListener(this);
jrb3.addActionListener(this);
jp.add(jrb1);
jp.add(jrb2);
jp.add(jrb3);
//文本
text=new JLabel();
text.setPreferredSize(new Dimension(300,40));
text.setFont(font);
text.setText("這些文字用來實時顯示字體大小和風格");
text.setForeground(Color.RED);
jp.add(text);
//設置可見、設置可退出
frame.setVisible(true);
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource() instanceof JComboBox){
int index= jcb.getSelectedIndex();
int fontSize=16;
int style=text.getFont().getStyle();
if(index==1){
fontSize=18;
}else
if(index==2){
fontSize=20;
}
Font font=new Font("宋體",style,fontSize);
this.text.setFont(font);
text.repaint();
}else
if(e.getSource() instanceof JRadioButton){
int style=Font.PLAIN;
int fontSize=text.getFont().getSize();
JRadioButton jr=(JRadioButton)e.getSource();
if(jr.equals(jrb1)){
jrb1.setSelected(true);
jrb2.setSelected(false);
jrb3.setSelected(false);
style=Font.PLAIN;
}else
if(jr.equals(jrb2)){
jrb2.setSelected(true);
jrb1.setSelected(false);
jrb3.setSelected(false);
style=Font.BOLD;
}else
if(jr.equals(jrb3)){
jrb3.setSelected(true);
jrb1.setSelected(false);
jrb2.setSelected(false);
style=Font.ITALIC;
}
Font font=new Font("宋體",style,fontSize);
this.text.setFont(font);
}
}
public static void main(String[] args) {
new FontTest();
}
}