(2)使用 getAvailableFontFamilyNamesO方法获得系统字体,添加到JComboBox中,可以选择某种字体,在画布中显示文本“Java入门与精通”,如下图所示。java
时间: 2024-03-01 22:50:31 浏览: 45
好的,我可以为你提供示例代码。
以下是实现上述要求的示例代码:
```java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class FontDemo implements ActionListener {
JPanel panel; // 画布面板
JComboBox<String> fontComboBox; // 字体下拉框
JButton drawButton; // 绘制按钮
String[] fonts; // 系统字体数组
public FontDemo() {
// 获取系统字体
fonts = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
// 创建字体下拉框和绘制按钮
fontComboBox = new JComboBox<>(fonts);
drawButton = new JButton("绘制");
drawButton.addActionListener(this);
// 创建画布面板
panel = new JPanel() {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
// 获取字体名称和字体样式
String fontName = (String) fontComboBox.getSelectedItem();
int fontStyle = Font.PLAIN;
// 绘制文本
g.setFont(new Font(fontName, fontStyle, 24));
g.drawString("Java入门与精通", 50, 100);
}
};
// 添加字体下拉框和绘制按钮到主面板
JFrame frame = new JFrame("Font Demo");
frame.getContentPane().add(fontComboBox, BorderLayout.NORTH);
frame.getContentPane().add(panel, BorderLayout.CENTER);
frame.getContentPane().add(drawButton, BorderLayout.SOUTH);
// 设置窗口属性
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 200);
frame.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
// 重新绘制画布
panel.repaint();
}
public static void main(String[] args) {
new FontDemo();
}
}
```
运行此代码将显示一个窗口,其中包含一个字体下拉框、一个绘制按钮和一个画布面板。选择字体后,单击绘制按钮将在画布中显示文本“Java入门与精通”。
阅读全文