2015-11-24 65 views
0

我想要設計一個動作偵聽器,它將創建一個彈出窗口,該窗口將包含包含所有系統字體的組合框。更具體地說,我想設計一個字體選擇選項,比如使用Java swing的文本編輯器。Java Swing彈出式字體選擇

我該怎麼做?

+0

[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個鏈接將有所幫助。 –

回答

3

示例(這就是爲什麼這個答案是一個社區的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); 
    } 

} 
0

您應該獲得可用的系統字體列表。將該列表放入JComboBox並將偵聽器添加到該JComboBox。

獲取系統字體與此代碼

GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); 
Font[] fonts = e.getAllFonts(); 

要顯示的JComboBox與彈出使用JOptionPane的用戶。參見教程基於三個環節我張貼這種https://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html#input

+0

什麼是彈出的程序? –