您的位置:首页 > 编程语言 > Java开发

Java字体选择对话框

2013-01-17 20:14 453 查看
/**
* 字体选择对话框。
*
* @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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐