java字体设置框_Java字体选择对话框

/**

* 字体选择对话框。

*

* @author lucky star

*

*/

public class FontDialog extends JDialog {

private final JPanel contentPanel = new JPanel();

private JComboBox fontNameBox = null;

private JComboBox fontStyleBox = null;

private JComboBox fontSizeBox = null;

private JTextArea txtrHereIs = null;

private String fontName;

private String fontStyle;

private String fontSize;

private int fontSty;

private int fontSiz;

/**

* Launch the application.

*/

public static void main(String[] args) {

try {

FontDialog dialog = new FontDialog();

dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);

dialog.setVisible(true);

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* Create the dialog.

*/

public FontDialog() {

setTitle("\u5B57\u4F53");

setBounds(100, 100, 483, 234);

getContentPane().setLayout(new BorderLayout());

contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));

getContentPane().add(contentPanel, BorderLayout.CENTER);

contentPanel.setLayout(null);

{

JLabel lblf = new JLabel("\u5B57\u4F53(F):");

lblf.setBounds(0, 10, 54, 15);

contentPanel.add(lblf);

}

{

JLabel lbly = new JLabel("\u5B57\u5F62(Y):");

lbly.setBounds(182, 10, 54, 15);

contentPanel.add(lbly);

}

{

JLabel lbls = new JLabel("\u5927\u5C0F(S):");

lbls.setBounds(315, 10, 54, 15);

contentPanel.add(lbls);

}

{

JLabel label = new JLabel("\u663E\u793A\u6548\u679C:");

label.setBounds(126, 82, 64, 15);

contentPanel.add(label);

}

Panel panel = new Panel();

panel.setBounds(196, 40, 228, 113);

contentPanel.add(panel);

panel.setLayout(null);

{

txtrHereIs = new JTextArea();

txtrHereIs.setBounds(39, 38, 177, 44);

txtrHereIs

.setText("\u8FD9\u91CC\u663E\u793A\u9884\u89C8\r\nHere is the preview");

panel.add(txtrHereIs);

}

{

fontNameBox = new JComboBox();

fontNameBox.setBounds(49, 7, 123, 21);

contentPanel.add(fontNameBox);

fontNameBox.addItemListener(new ItemListener() {

public void itemStateChanged(ItemEvent itemevent) {

fontName = (String) itemevent.getItem();

System.out.println(fontName);

// change preview

Font f = new Font(fontName, fontSty, fontSiz);

txtrHereIs.setFont(f);

}

});

}

{

fontStyleBox = new JComboBox();

fontStyleBox.setBounds(232, 7, 73, 21);

contentPanel.add(fontStyleBox);

fontStyleBox.addItemListener(new ItemListener() {

public void itemStateChanged(ItemEvent itemevent) {

fontStyle = (String) itemevent.getItem();

fontSty = getFontStyleByCnName(fontStyle);

// change preview

Font f = new Font(fontName, fontSty, fontSiz);

txtrHereIs.setFont(f);

}

});

}

{

fontSizeBox = new JComboBox();

fontSizeBox.setBounds(379, 7, 78, 21);

contentPanel.add(fontSizeBox);

fontSizeBox.addItemListener(new ItemListener() {

public void itemStateChanged(ItemEvent itemevent) {

fontSize = (String) itemevent.getItem();

fontSiz = Integer.parseInt(fontSize);

// change preview

Font f = new Font(fontName, fontSty, fontSiz);

txtrHereIs.setFont(f);

}

});

}

{

JPanel buttonPane = new JPanel();

buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));

getContentPane().add(buttonPane, BorderLayout.SOUTH);

{

JButton okButton = new JButton("\u786E\u5B9A");

okButton.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent actionevent) {

int fontSty = getFontStyleByCnName(fontStyle);

int fontSiz = Integer.parseInt(fontSize);

JOptionPane.showMessageDialog(FontDialog.this,

"你选择的字体名称:" + fontName + ",字体样式:" + fontStyle

+ ",字体大小:" + fontSiz, "提示",

JOptionPane.CLOSED_OPTION);

}

});

okButton.setActionCommand("OK");

buttonPane.add(okButton);

getRootPane().setDefaultButton(okButton);

}

{

JButton cancelButton = new JButton("\u53D6\u6D88");

cancelButton.setActionCommand("Cancel");

buttonPane.add(cancelButton);

cancelButton.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent actionevent) {

FontDialog.this.dispose();

}

});

}

}

// 初始化字体名称

GraphicsEnvironment ge = GraphicsEnvironment

.getLocalGraphicsEnvironment();

String[] fontNames = ge.getAvailableFontFamilyNames();

fontNameBox.setModel(new DefaultComboBoxModel(fontNames));

// 初始化字体样式

String[] fontStyles = { "常规", "斜体", "粗体", "粗斜体" };

fontStyleBox.setModel(new DefaultComboBoxModel(fontStyles));

// 初始化字体大小

String[] fontSizes = { "8", "9", "10", "11", "12", "14", "16", "18",

"20", "22", "24", "26", "28", "36", "48", "72" };

fontSizeBox.setModel(new DefaultComboBoxModel(fontSizes));

System.out.println("finish.");

fontSizeBox.setSelectedIndex(4);

fontStyle = (String) fontStyleBox.getSelectedItem();

fontSize = (String) fontSizeBox.getSelectedItem();

fontSty = getFontStyleByCnName(fontStyle);

fontSiz = Integer.parseInt(fontSize);

}

public static int getFontStyleByCnName(String fontStyle) {

if (fontStyle.equals("常规")) {

return Font.PLAIN;

}

if (fontStyle.equals("斜体")) {

return Font.ITALIC;

}

if (fontStyle.equals("粗体")) {

return Font.BOLD;

}

if (fontStyle.equals("粗斜体")) {

return Font.BOLD + Font.ITALIC;

}

return -1;

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值