我想设计一个动作监听器,它将创建一个弹出窗口,其中包含一个包含所有系统字体的组合框。更具体地说,我想设计一个字体选择选项,如使用Java swing的文本编辑器。
我该怎么做?
答案 0 :(得分:3)
基于我发布的三个链接的示例(这就是为什么这个答案是社区维基,所以我无法从中获得声誉):
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.GraphicsEnvironment;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class Example {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new Example();
}
});
}
public Example() {
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
String[] array = ge.getAvailableFontFamilyNames();
JComboBox<String> box = new JComboBox<String>(array);
box.setEditable(true);
JFrame frame = new JFrame();
JButton button = new JButton("Button");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(frame, box, "...", JOptionPane.QUESTION_MESSAGE);
System.out.println(box.getSelectedItem());
}
});
frame.getContentPane().add(button);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
答案 1 :(得分:0)
您应该获得可用的系统字体列表。将该列表放入JComboBox并将侦听器添加到该JComboBox。
使用此代码获取系统字体
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
Font[] fonts = e.getAllFonts();
使用弹出窗口向用户显示JComboBox使用JOptionPane。请参阅此https://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html#input
的教程