gpt4 book ai didi

java - 从 JComboBox 更改 Graphics2D 字体

转载 作者:行者123 更新时间:2023-12-02 13:12:57 29 4
gpt4 key购买 nike

我一直在尝试实现一个 JComboBox,其中包含所有可用的字体系列,然后使用操作监听器来更改 Graphics2D 变量的字体。然而我一直遇到这个异常:

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String cannot be cast to java.awt.Font
at Paint$TextBox$FontListener.actionPerformed(Paint.java:250)

不完全确定出了什么问题。这是相关代码。感谢您的帮助!

class TextBox {

JFrame text = new JFrame("Text Box");
JTextField TB = new JTextField();
JLabel tb = new JLabel(" Type Message: ");

String[] fonts = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
JComboBox font = new JComboBox(fonts);

public TextBox() {
text.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
TB.addActionListener(new TextListener());
font.addActionListener(new FontListener());
text.setLayout(new GridLayout(0, 2));
text.add(tb);
text.add(TB);
text.add(font);

text.setSize(400, 75);
text.setLocation(250, 200);
}

public void visible() {
text.setVisible(true);
}

class TextListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
yourText = (String)TB.getText();
}
}

class FontListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
JComboBox selectedFont = (JComboBox)e.getSource();
Font newFont = (Font)selectedFont.getSelectedItem();
Font derivedFont = newFont.deriveFont(newFont.getSize()*1.4F);
graphics.setFont(derivedFont);
}
}

最佳答案

您需要通过在构造函数中传递 String 来创建一个 Font 对象。

<强> Font 类的构造函数定义为 public Font(String name,int style,int size) .

所以你需要改变

Font newFont = (Font)selectedFont.getSelectedItem();

Font newFont = new Font((String)selectedFont.getSelectedItem() , /*style*/ , /*size*/);

关于java - 从 JComboBox 更改 Graphics2D 字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43884695/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com