这就是Java GUI一个简单的文字预览器
程序可以运行,只是有一点儿Bug找不出来
可以改字体的颜色了已经,样式的参数也改变了
但是最后显示处理样式还是不变,有点绕进去了我
大神求救,小白要哭了
import java.awt.*;
import java.awt.event.*;
import java.awt.font.*;
import javax.swing.*;
public class ArtFont extends JFrame implements ActionListener{
JComboBox fontType;
JComboBox 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;//设置字体的默认颜色为黑色;
public ArtFont(){
super("字体设置");
//设置默认字体
boldStyle = 0;
italicStyle = 0;
underlineStyle = 0;
fontSizeStyle = 10;
fontNameStyle = "隶书";
fontPanel = new JPanel();
fontPanel.setLayout(new FlowLayout());
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
fontNames = ge.getAvailableFontFamilyNames();//获得系统中所有字体的名字
font = new Font(fontNameStyle,boldStyle+italicStyle,fontSizeStyle);
fontType = new JComboBox(fontNames);
fontType.setEditable(false);
fontType.setMaximumRowCount(10);
fontType.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e){
fontNameStyle = fontType.getSelectedItem().toString();
//txtArea.getText().setFont(new Font((String)fontType.getSelectedItem(),Font.PLAIN,10));//实现监听字体名字改变的事件
}
});
//设置字体大小
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){
if(e.getSource() == fontSize){//改变字体
fontSizeStyle = Integer.parseInt(fontSize.getSelectedItem().toString());
}
else if(e.getSource()==inputText){//将输入的文字在文字显示区表示
txtArea.setText(inputText.getText());
}
//txtArea.getText().setFont(new Font("宋体",Font.PLAIN,(int)fontSize.getSelectedItem()));//实现监听字体大小改变的方法
}
});
//设置粗体选择按钮;
boldBx = new JCheckBox("粗体");
boldBx.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e){
boldStyle = 1;
//txtArea.getText().setFont(new Font("宋体",Font.BOLD,10));//实现监听选择粗体状态改变的方法
}
});
//实现斜体选择按钮
italicBx = new JCheckBox("斜体");
italicBx.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e){
italicStyle = 1;
//txtArea.getText().setFont(new Font("宋体",Font.ITALIC,10));//实现监听选择斜体状态改变的方法
}
});
//实现颜色选择
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);
txtArea.setFont(font);
//设置文本面板
showPanel = new JPanel();
showPanel.add(label);
showPanel.add(inputText);
showPanel.setLayout(new FlowLayout());
showPanel.add(new JScrollPane(txtArea));
//设置容器
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 static void main(String[] args){
ArtFont artFont = new ArtFont();
artFont.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}