java字体设置框_[JAVA] java仿windows 字体设置选项卡

1 package实验;2

3 import java.awt.*;4 importjava.awt.event.ActionEvent;5 importjava.awt.event.ActionListener;6 importjava.awt.event.MouseAdapter;7 importjava.awt.event.MouseEvent;8

9 import javax.swing.*;10 importjavax.swing.border.BevelBorder;11

12 /**

13 * 字体格式设置对话框14 */

15

16 public class FontFormat extendsJDialog {17

18 privateJLabel nameLb;19 privateJLabel styleLb;20 privateJLabel sizeLb;21 privateJLabel presLb;22 privateJTextField nameTx;23 privateJTextField styleTx;24 privateJTextField sizeTx;25 privateJTextField presTx;26 privateJList nameLt;27 privateJList styleLt;28 privateJList sizeLt;29 privateJScrollPane jScrollPane1;30 privateJScrollPane jScrollPane2;31 privateJScrollPane jScrollPane3;32 privateJButton approve;33 privateJButton cancel;34 privateJButton chose;35 private JRadioButton[] language = new JRadioButton[2];36 privateButtonGroup languageg;37 private String Slanguage[] = { new String("李涛"), new String("ABC") };38

39 private staticJFrame frame;40 public Font font, newFont;//字体类

41 private Color color;//颜色类

42 Color newColor;43

44 private JFileChooser fileChoose = new JFileChooser();//文件选择类实例

45 private JDialog colorDlg;//颜色对话框

46 private JColorChooser colorChoose = new JColorChooser();//颜色选择类实例

47

48 private GraphicsEnvironment environment; //该类中又获取系统字体的方法;

49 private String[] fontNameSet;//字体‘逻辑名’集50 //字体‘样式’集的字符串数组

51 private String[] fontStyleSet = { "常规", "倾斜", "加粗", "倾斜 加粗"};52 //字体‘样式’集的常量数组

53 private Integer[] fontCon ={ Font.PLAIN, Font.ITALIC, Font.BOLD,54 Font.BOLD |Font.ITALIC };55 //字体‘大小’集

56 private String[] fontSizeSet = { "6", "7", "8", "9", "10", "11", "12",57 "14", "16", "18", "20", "22", "24", "26", "28", "36", "48", "72"};58

59 public static void main(String args[]) {//主函数

60 FontFormat a = newFontFormat();61 a.setVisible(true);62 }63

64 public FontFormat() {//无参构造函数

65 super(frame, "李涛—字体设置窗口", true);66 frame = newJFrame();67 initGUI();68 }69

70 public FontFormat(JFrame frame) {//含参构造函数

71 super(frame, "李涛—字体设置窗口", true);72 this.frame = frame;//父窗口中必须有一个public的Font对象73 //setAlwaysOnTop(true);

74 initGUI();75 }76

77 private void initGUI() {//字体格式选择器的界面初始化

78 try{79 getContentPane().setLayout(null);80 environment = GraphicsEnvironment.getLocalGraphicsEnvironment();//GraphicsEnvironment是一个抽象类,不能实例化,只能用其中的静态方法获取一个实例

81 fontNameSet = environment.getAvailableFontFamilyNames();//获取系统字体

82 addMenu();//加入菜单

83 initFont();//初始化字体84 //pack();

85 setSize(380, 337);86 setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);87 setWindowPos();//使窗口屏幕居中

88 setResizable(false);//大小不可变

89 } catch(Exception e) {90 e.printStackTrace();91 }92 }93

94 private void initFont() {//初始化字体95 //设置默认字体格式为父窗口font对向的字体格式

96 if (frame.getFont() == null) {97 nameTx.setText(fontNameSet[0]);98 styleTx.setText(fontStyleSet[0]);99 sizeTx.setText("12");100 nameLt.setSelectedValue(fontNameSet[0], true);101 styleLt.setSelectedIndex(0);102 sizeLt.setSelectedValue("12", true);103 font = new Font(fontNameSet[0], fontCon[0], 12);104 newFont = font;//保存原来的字体格式

105 presTx.setFont(font);106 //JOptionPane.showMessageDialog(null, "ccac");

107 } else{108 int idxStyle = 0;109 for (int i = 0; i < fontCon.length; i++) {110 if (fontCon[i] ==frame.getFont().getStyle())111 idxStyle =i;112 }113 nameTx.setText(frame.getFont().getName());//改text

114 styleTx.setText(fontStyleSet[idxStyle]);115 sizeTx.setText("" +frame.getFont().getSize());116 nameLt.setSelectedValue(frame.getFont().getName(), true);//改list显示

117 styleLt.setSelectedIndex(idxStyle);118 sizeLt.setSelectedValue("" + frame.getFont().getSize(), true);119 font = new Font(fontNameSet[0], fontCon[0], 12);//保存当前格式

120 newFont = font;//保存原来的字体格式

121 presTx.setFont(font);//预览中设为当前模式

122 }123 }124

125 private void addMenu() {//加入菜单126 //4个lable---------------------------------------------------------------------------------

127 nameLb = newJLabel();128 getContentPane().add(nameLb);129 nameLb.setText("字体:");130 nameLb.setBounds(10, 14, 120, 26);131 nameLb.setFont(new java.awt.Font("SimSun", 1, 14));132

133 styleLb = newJLabel();134 getContentPane().add(styleLb);135 styleLb.setText("字型:");136 styleLb.setBounds(151, 14, 120, 23);137 styleLb.setFont(new java.awt.Font("SimSun", 1, 14));138

139 sizeLb = newJLabel();140 getContentPane().add(sizeLb);141 sizeLb.setText("大小:");142 sizeLb.setBounds(275, 14, 79, 24);143 sizeLb.setFont(new java.awt.Font("SimSun", 1, 14));144

145 presLb = newJLabel();146 getContentPane().add(presLb);147 presLb.setText("预览:");148 presLb.setBounds(151, 150, 120, 80);149 presLb.setFont(new java.awt.Font("SimSun", 1, 14));150

151 //4个textfield---------------------------------------------------------------------------------

152 nameTx = newJTextField();153 nameTx.setEditable(false);154 getContentPane().add(nameTx);155 nameTx.setBounds(10, 42, 120, 22);156

157 styleTx = newJTextField();158 styleTx.setEditable(false);159 getContentPane().add(styleTx);160 styleTx.setBounds(151, 42, 100, 21);161

162 sizeTx = newJTextField();163 sizeTx.setEditable(false);164 getContentPane().add(sizeTx);165 sizeTx.setBounds(275, 42, 79, 22);166

167 presTx = newJTextField();168 presTx.setEditable(false);169 getContentPane().add(presTx);170 presTx.setBounds(151, 200, 203, 61);171 presTx.setText(Slanguage[1]);172

173 //3个下拉条--+监听-----------------------------------------------------------------------------

174 jScrollPane1 = newJScrollPane();175 getContentPane().add(jScrollPane1);176 jScrollPane1.setBounds(10, 74, 120, 210);177 {178 ListModel fontNameModel = newDefaultComboBoxModel(fontNameSet);179 nameLt = newJList();180 jScrollPane1.setViewportView(nameLt);181 nameLt.setModel(fontNameModel);182 nameLt.setBounds(274, 193, 90, 86);183 nameLt.setBorder(BorderFactory184 .createEtchedBorder(BevelBorder.LOWERED));185 nameLt.addMouseListener(newMouseAdapter() {186 public voidmouseClicked(MouseEvent evt) {187 nameLtMouseClicked(evt);188 }189 });190 }191

192 jScrollPane2 = newJScrollPane();193 getContentPane().add(jScrollPane2);194 jScrollPane2.setBounds(151, 74, 100, 103);195 {196 ListModel fontStyleModel = newDefaultComboBoxModel(fontStyleSet);197 styleLt = newJList();198 jScrollPane2.setViewportView(styleLt);199 styleLt.setModel(fontStyleModel);200 styleLt.setBounds(310, 215, 70, 102);201 styleLt.setBorder(BorderFactory202 .createEtchedBorder(BevelBorder.LOWERED));203 styleLt.addMouseListener(newMouseAdapter() {204 public voidmouseClicked(MouseEvent evt) {205 styleLtMouseClicked(evt);206 }207 });208 }209

210 jScrollPane3 = newJScrollPane();211 getContentPane().add(jScrollPane3);212 jScrollPane3.setBounds(275, 75, 79, 100);213 {214 ListModel fontSizeModel = newDefaultComboBoxModel(fontSizeSet);215 sizeLt = newJList();216 jScrollPane3.setViewportView(sizeLt);217 sizeLt.setModel(fontSizeModel);218 sizeLt.setBounds(300, 218, 54, 102);219 sizeLt.setBorder(BorderFactory220 .createEtchedBorder(BevelBorder.LOWERED));221 sizeLt.addMouseListener(newMouseAdapter() {222 public voidmouseClicked(MouseEvent evt) {223 sizeLtMouseClicked(evt);224 }225 });226 }//-------------------------------------------------------------------------------------227

228 //中英选项(---------------------------------------------------------------------------------

229 languageg = newButtonGroup();230 language[0] = new JRadioButton("中");231 getContentPane().add(language[0]);232 language[0].setSelected(false);//初始化显示

233 language[0].setBounds(271, 179, 40, 20);234 language[0].setFont(new java.awt.Font("SimSun", 1, 12));235 languageg.add(language[0]);236 language[0].addActionListener(newActionListener() {237 public voidactionPerformed(ActionEvent evt) {238 presTx.setText(Slanguage[0]);239 }240 });241

242 language[1] = new JRadioButton("英");243 getContentPane().add(language[1]);244 language[1].setSelected(true);245 language[1].setBounds(321, 179, 40, 20);246 language[1].setFont(new java.awt.Font("SimSun", 1, 12));247 languageg.add(language[1]);248 language[1].addActionListener(newActionListener() {249 public voidactionPerformed(ActionEvent evt) {250 presTx.setText(Slanguage[1]);251 }252 });253

254 //3个按钮+监听---------------------------------------------------------------------------------255 //确定按钮

256 approve = newJButton();257 getContentPane().add(approve);258 approve.setText("确定");259 approve.setBounds(151, 265, 67, 20);260 approve.setFont(new java.awt.Font("KaiTi_GB2312", 1, 12));261 approve.addActionListener(newActionListener() {262 public voidactionPerformed(ActionEvent evt) {263 approveActionPerformed(evt);264 }265 });266

267 //取消按钮

268 cancel = newJButton();269 getContentPane().add(cancel);270 cancel.setText("取消");271 cancel.setBounds(219, 265, 67, 20);272 cancel.setFont(new java.awt.Font("KaiTi_GB2312", 1, 12));273 cancel.addActionListener(newActionListener() {274 public voidactionPerformed(ActionEvent evt) {275 cancelActionPerformed(evt);276 }277 });278

279 //颜色选择按钮

280 chose = newJButton();281 getContentPane().add(chose);282 chose.setText("颜色");283 chose.setBounds(287, 265, 67, 20);284 chose.setFont(new java.awt.Font("KaiTi_GB2312", 1, 12));285 chose.addActionListener(newActionListener() {286 public voidactionPerformed(ActionEvent evt) {287 choseActionPerformed(evt);288 }289 });//-------------------------------------------------------------------------

290 }291

292 private void setWindowPos() {//窗口居中

293 Toolkit kit = Toolkit.getDefaultToolkit();//抽象类,通过静态方法获取实例

294 Dimension frameSize = new Dimension(), screenSize = kit.getScreenSize(); //获取屏幕的大小

295 getSize(frameSize); //获取窗口大小

296 setLocation((screenSize.width - frameSize.width) / 2,297 (screenSize.height - frameSize.height) / 2);298 }299

300 private void nameLtMouseClicked(MouseEvent evt) {//字体逻辑名列表的鼠标单击事件

301 nameTx.setText(nameLt.getSelectedValue().toString());302 font = newFont(nameTx.getText(), font.getStyle(), font.getSize());303 presTx.setFont(font);304 }305

306 private void styleLtMouseClicked(MouseEvent evt) {//字体样式列表的鼠标单击事件

307 String temp =styleLt.getSelectedValue().toString();308 styleTx.setText(temp);309 int index = 0;310 while (index < 4 && !fontStyleSet[index].equals(temp)) {311 index++;312 }313 font = newFont(font.getName(), fontCon[index], font.getSize());314 presTx.setFont(font);315 }316

317 private void sizeLtMouseClicked(MouseEvent evt) {//字体大小列表的鼠标点击事件

318 sizeTx.setText(sizeLt.getSelectedValue().toString());319 font = newFont(font.getName(), font.getStyle(),320 Integer.parseInt(sizeTx.getText()));321 presTx.setFont(font);322 }323

324 private void approveActionPerformed(ActionEvent evt) {//确定按钮的触发事件

325 String name =nameTx.getText();326 int style =fontCon[styleLt.getSelectedIndex()];327 int size =Integer.parseInt(sizeTx.getText());328 font = newFont(name, style, size);329 frame.setFont(font); //父窗口的Font对象

330 newFont = font;//更新原来保存格式

331 newColor = color;//更新颜色

332 this.dispose();333 }334

335 private void cancelActionPerformed(ActionEvent evt) {//取消按钮的触发事件

336 this.dispose();337 }338

339 private void choseActionPerformed(ActionEvent evt) {//颜色选择触发事件

340 if (colorDlg == null) {341 colorDlg = JColorChooser.createDialog(FontFormat.this,342 "Select Text Color", true, colorChoose,343 new ColorOKListener(), null);344 }345 colorChoose.setColor(color =presTx.getForeground());346 colorDlg.setVisible(true);347 }348

349 class ColorOKListener implements ActionListener {//重写颜色按钮点击监听类覆盖接口ActionListener

350 public voidactionPerformed(ActionEvent e) {351 Color c =colorChoose.getColor();352 color =c;353 presTx.setForeground(c);354 presTx.repaint();355 }356 }357 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值