我想要設計一個動作偵聽器,它將創建一個彈出窗口,該窗口將包含包含所有系統字體的組合框。更具體地說,我想設計一個字體選擇選項,比如使用Java swing的文本編輯器。Java Swing彈出式字體選擇
我該怎麼做?
我想要設計一個動作偵聽器,它將創建一個彈出窗口,該窗口將包含包含所有系統字體的組合框。更具體地說,我想設計一個字體選擇選項,比如使用Java swing的文本編輯器。Java Swing彈出式字體選擇
我該怎麼做?
示例(這就是爲什麼這個答案是一個社區的wiki,所以我不能從中獲得聲望):
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);
}
}
您應該獲得可用的系統字體列表。將該列表放入JComboBox並將偵聽器添加到該JComboBox。
獲取系統字體與此代碼
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
Font[] fonts = e.getAllFonts();
要顯示的JComboBox與彈出使用JOptionPane的用戶。參見教程基於三個環節我張貼這種https://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html#input
什麼是彈出的程序? –
[Java的:編輯的JComboBox在JOptionPane inputDialog?](http://stackoverflow.com/a/9522854/4857909),[要獲取系統中所有可用的字體](http://www.java2s.com/Tutorial/Java/0261__2D-Graphics/Togetallavailablefontsinyoursystem .htm),[如何編寫Action Listener](https://docs.oracle.com/javase/tutorial/uiswing/events/actionlistener.html)。我希望這3個鏈接將有所幫助。 –