Java窗体中加入字体样式菜单,有多种字体可选择
时间: 2024-01-28 17:04:42 浏览: 101
Java窗体字体样式
要在Java窗体中加入字体样式菜单,可以使用JMenuBar和JMenu类创建菜单栏和菜单项。然后,使用Font类设置字体样式,将其应用于所选文本。
以下是一个简单的示例代码,演示如何在Java窗体中添加字体样式菜单:
```
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class FontMenuExample extends JFrame {
private JTextArea textArea;
private JMenuBar menuBar;
private JMenu fontMenu;
private JMenu styleMenu;
private JMenu sizeMenu;
public FontMenuExample() {
setTitle("Font Menu Example");
setSize(500, 500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
textArea = new JTextArea();
JScrollPane scrollPane = new JScrollPane(textArea);
getContentPane().add(scrollPane, BorderLayout.CENTER);
menuBar = new JMenuBar();
setJMenuBar(menuBar);
fontMenu = new JMenu("Font");
menuBar.add(fontMenu);
String[] fontNames = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
for (String fontName : fontNames) {
JMenuItem fontItem = new JMenuItem(fontName);
fontItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Font currentFont = textArea.getFont();
Font newFont = new Font(fontName, currentFont.getStyle(), currentFont.getSize());
textArea.setFont(newFont);
}
});
fontMenu.add(fontItem);
}
styleMenu = new JMenu("Style");
menuBar.add(styleMenu);
JMenuItem plainItem = new JMenuItem("Plain");
plainItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Font currentFont = textArea.getFont();
Font newFont = new Font(currentFont.getName(), Font.PLAIN, currentFont.getSize());
textArea.setFont(newFont);
}
});
styleMenu.add(plainItem);
JMenuItem boldItem = new JMenuItem("Bold");
boldItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Font currentFont = textArea.getFont();
Font newFont = new Font(currentFont.getName(), Font.BOLD, currentFont.getSize());
textArea.setFont(newFont);
}
});
styleMenu.add(boldItem);
JMenuItem italicItem = new JMenuItem("Italic");
italicItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Font currentFont = textArea.getFont();
Font newFont = new Font(currentFont.getName(), Font.ITALIC, currentFont.getSize());
textArea.setFont(newFont);
}
});
styleMenu.add(italicItem);
sizeMenu = new JMenu("Size");
menuBar.add(sizeMenu);
for (int i = 8; i <= 24; i += 2) {
JMenuItem sizeItem = new JMenuItem(String.valueOf(i));
sizeItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Font currentFont = textArea.getFont();
Font newFont = new Font(currentFont.getName(), currentFont.getStyle(), i);
textArea.setFont(newFont);
}
});
sizeMenu.add(sizeItem);
}
}
public static void main(String[] args) {
FontMenuExample frame = new FontMenuExample();
frame.setVisible(true);
}
}
```
在这个例子中,我们创建了一个JTextArea和一个JScrollPane,将其添加到窗体中央。然后,我们创建了一个JMenuBar和三个JMenu:Font、Style和Size。Font菜单包含所有可用的字体,Style菜单包含三个样式选项:普通、粗体和斜体。Size菜单包含可用的字体大小选项。
每个菜单项都添加了一个ActionListener,用于根据用户选择更新文本区域的字体样式。在ActionListener中,我们使用Font类创建一个新的字体,将其应用于文本区域。
阅读全文