编写一个程序,可以动态地改变堆栈面板上显示的标签中文本的字体。这个 消息可以同时以粗体和斜体显示。可以从组合框中选择字体名和字体大小,如图 16 - 42a 所示。 使用 Font .getFamiliesO 可以得到可用的宇体名。字体大小的组合框初始化为从 1到 100 之间的数字。
时间: 2024-02-17 15:03:29 浏览: 160
好的,这是一个比较具体的编程问题。我可以给你提供一个Java Swing的实现思路:
1. 创建一个JFrame窗口,其中包含一个JPanel面板和一个JComboBox组合框。
2. 在JPanel面板上添加一个JLabel标签,并设置其字体为默认字体(例如,new Font("宋体", Font.PLAIN, 12))。
3. 监听JComboBox组合框的选择事件,根据用户选择的字体和字号,设置JLabel标签的字体。
4. 根据用户选择的粗体和斜体选项,设置JLabel标签的字体样式。
下面是Java代码实现:
```
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class FontPanel extends JFrame implements ActionListener {
private JLabel label;
private JComboBox<String> fontBox;
private JComboBox<Integer> sizeBox;
private JCheckBox boldBox;
private JCheckBox italicBox;
public FontPanel() {
setTitle("Font Panel");
setSize(300, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel(new BorderLayout());
label = new JLabel("Hello, World!");
label.setFont(new Font("宋体", Font.PLAIN, 12));
panel.add(label, BorderLayout.CENTER);
JPanel controlPanel = new JPanel();
fontBox = new JComboBox<>(GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames());
fontBox.addActionListener(this);
controlPanel.add(fontBox);
sizeBox = new JComboBox<>();
for (int i = 1; i <= 100; i++) {
sizeBox.addItem(i);
}
sizeBox.addActionListener(this);
controlPanel.add(sizeBox);
boldBox = new JCheckBox("Bold");
boldBox.addActionListener(this);
controlPanel.add(boldBox);
italicBox = new JCheckBox("Italic");
italicBox.addActionListener(this);
controlPanel.add(italicBox);
panel.add(controlPanel, BorderLayout.SOUTH);
add(panel);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
String fontName = (String)fontBox.getSelectedItem();
int fontSize = (int)sizeBox.getSelectedItem();
int fontStyle = 0;
if (boldBox.isSelected()) {
fontStyle |= Font.BOLD;
}
if (italicBox.isSelected()) {
fontStyle |= Font.ITALIC;
}
label.setFont(new Font(fontName, fontStyle, fontSize));
}
public static void main(String[] args) {
new FontPanel();
}
}
```
这个程序创建了一个包含字体选择器和样式选择器的JFrame窗口,可以动态改变JLabel标签的字体。你可以根据自己的需要进行修改和扩展。
阅读全文