Java Swing Popup字体选择

时间:2015-11-24 20:22:42

标签: java swing fonts combobox popup

我想设计一个动作监听器,它将创建一个弹出窗口,其中包含一个包含所有系统字体的组合框。更具体地说,我想设计一个字体选择选项,如使用Java swing的文本编辑器。

我该怎么做?

2 个答案:

答案 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

的教程