马克7758 2020-06-22 22:34 采纳率: 25%
浏览 229

为啥这个改字体没用,检查不出来Java简单GUI

这是一个实现改变文本字体样式的简单编辑器,用Java实现的简单GUI
改变字体的颜色没有问题,但是改变样式没有作用
检查了参数确实都正确,不知道问题在哪
求大神帮忙挑出来,感激不及

____________________________________________________________
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){
                fontSizeStyle = Integer.parseInt(fontSize.getSelectedItem().toString());
                //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);
    }
}



  • 写回答

1条回答 默认 最新

  • dabocaiqq 2020-08-16 13:18
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题