java 字体选择器_字体选择器

/** JFontChooser.java

*

* Created on 2006年11月17日, 上午11:21

*

* To change this template, choose Tools | Template Manager

* and open the template in the editor.*/packagelbf.swing;/***

*@authorlbf*/importjavax.swing.*;importjava.awt.event.*;importjava.awt.*;importjava.util.*;importjavax.swing.event.*;publicclassJFontChooserextendsJPanelimplementsActionListener,ListSelectionListener{privateJDialog jd;//用于显示模态的窗体privateJComboBox fonts;//用于选择字体的下拉框privateJList face,size;//用于选择字形和字号的列表privateJTextField sizeJT;//用于显示选中的字形和字号privateJButton ok,cancel;//表示选中和取消的按钮privateFont current;//表示当然选中的字体privateGraphicsEnvironment ge;//表示当前的图形环境privateJLabel demo;//表示预览的labelprivateString fontName="宋体";privateintfontStyle=Font.PLAIN,fontSize=20;privateFrame owner;//表示父类的组件窗体privateHashtableht;//名字到大小的映射/**Creates a new instance of JFontChooser*/privateJFontChooser() {

initOther();

}privatevoidinitOther(){

current=newFont(fontName,fontStyle,fontSize);

ht=newHashtable();

sizeJT=newJTextField("20");

sizeJT.setEditable(false);

sizeJT.setBounds(260,40,50,20);

ge=GraphicsEnvironment.getLocalGraphicsEnvironment();

String[] family=ge.getAvailableFontFamilyNames();

fonts=newJComboBox(family);

fonts.setEditable(false);

fonts.setMaximumRowCount(5);

demo=newJLabel("千里冰封  ABCD abcd",JLabel.CENTER);

demo.setFont(current);

String[] faceString={"正常","粗体","斜体","粗体+斜体"};

String[] sizeString={"初号","小初","一号","小一","二号","小二","三号","小三","四号","小四","五号","小五","六号","小六","七号","八号","5","8","9","10","11","12","14","16","18","20","22","24","26","28","36","48","72"};int[] sizeValue={42,36,26,24,22,18,16,15,14,12,11,9,7,6,5,4,5,8,9,10,11,12,14,16,18,20,22,24,26,28,36,48,72};for(inti=0;i

ht.put(sizeString[i],sizeValue[i]);

}

face=newJList(faceString);

size=newJList(sizeString);

face.setSelectedIndex(0);

size.setSelectedIndex(25);

fonts.setSelectedItem("宋体");

face.setVisibleRowCount(4);

size.setVisibleRowCount(4);

ok=newJButton("确定");

cancel=newJButton("取消");

ok.addActionListener(this);

cancel.addActionListener(this);

fonts.addActionListener(this);

face.addListSelectionListener(this);

size.addListSelectionListener(this);

}privatevoidinitWindow(String title){this.setLayout(newBorderLayout());

JLabel fontLabel=newJLabel("字体");

JLabel faceLabel=newJLabel("字形");

JLabel sizeLabel=newJLabel("字号");

fontLabel.setForeground(Color.RED);

faceLabel.setForeground(Color.RED);

sizeLabel.setForeground(Color.RED);

fontLabel.setBounds(20,20,100,20);

faceLabel.setBounds(180,20,80,20);

sizeLabel.setBounds(260,20,50,20);

fonts.setBounds(10,40,127,21);

JScrollPane faceScroll=newJScrollPane(face);

JScrollPane sizeScroll=newJScrollPane(size);

faceScroll.setBounds(180,40,65,100);

sizeScroll.setBounds(260,60,50,80);

JPanel up=newJPanel(null);

JPanel center=newJPanel(newBorderLayout());

JPanel bottom=newJPanel();

up.setPreferredSize(newDimension(345,160));

up.add(fontLabel);

up.add(faceLabel);

up.add(sizeLabel);

up.add(fonts);

up.add(faceScroll);

up.add(sizeScroll);

up.add(sizeJT);

up.setBorder(BorderFactory.createTitledBorder("选择区"));

center.add(demo,BorderLayout.CENTER);

center.setBorder(BorderFactory.createTitledBorder("预览区"));

bottom.add(ok);

bottom.add(cancel);this.add(up,BorderLayout.NORTH);this.add(center,BorderLayout.CENTER);this.add(bottom,BorderLayout.SOUTH);

jd=newJDialog(owner,title,true);

jd.getContentPane().add(this,BorderLayout.CENTER);

jd.setSize(360,360);

jd.setResizable(false);

jd.setLocationRelativeTo(owner);

jd.addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvent we){

current=null;

jd.dispose();

}

});

jd.setVisible(true);

}publicvoidactionPerformed(ActionEvent ae){if(ae.getSource()==fonts){

fontName=(String)fonts.getSelectedItem();

current=newFont(fontName,fontStyle,fontSize);

demo.setFont(current);this.repaint();

}elseif(ae.getSource()==ok){

jd.dispose();

}elseif(ae.getSource()==cancel){

current=null;

jd.dispose();

}

}publicvoidvalueChanged(ListSelectionEvent le){if(le.getSource()==face){

String value=(String)face.getSelectedValue();if(value.equals("正常")){

fontStyle=Font.PLAIN;

}elseif(value.equals("粗体")){

fontStyle=Font.BOLD;

}elseif(value.equals("斜体")){

fontStyle=Font.ITALIC;

}elseif(value.equals("粗体+斜体")){

fontStyle=Font.ITALIC|Font.BOLD;

}

current=newFont(fontName,fontStyle,fontSize);

demo.setFont(current);this.repaint();

}elseif(le.getSource()==size){

String sizeName=(String)size.getSelectedValue();

sizeJT.setText(sizeName);

fontSize=ht.get(sizeName);

current=newFont(fontName,fontStyle,fontSize);

demo.setFont(current);this.repaint();

}

}publicstaticFont showDialog(Frame owner,String title){

JFontChooser jf=newJFontChooser();

jf.initWindow(title);returnjf.current;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于计算机专业的学生而言,参加各类比赛能够带来多方面的益处,具体包括但不限于以下几点: 技能提升: 参与比赛促使学生深入学习和掌握计算机领域的专业知识与技能,如编程语言、算法设计、软件工程、网络安全等。 比赛通常涉及实际问题的解决,有助于将理论知识应用于实践中,增强问题解决能力。 实践经验: 大多数比赛都要求参赛者设计并实现解决方案,这提供了宝贵的动手操作机会,有助于积累项目经验。 实践经验对于计算机专业的学生尤为重要,因为雇主往往更青睐有实际项目背景的候选人。 团队合作: 许多比赛鼓励团队协作,这有助于培养学生的团队精神、沟通技巧和领导能力。 团队合作还能促进学生之间的知识共享和思维碰撞,有助于形成更全面的解决方案。 职业发展: 获奖经历可以显著增强简历的吸引力,为求职或继续深造提供有力支持。 某些比赛可能直接与企业合作,提供实习、工作机会或奖学金,为学生的职业生涯打开更多门路。 网络拓展: 比赛是结识同行业人才的好机会,可以帮助学生建立行业联系,这对于未来的职业发展非常重要。 奖金与荣誉: 许多比赛提供奖金或奖品,这不仅能给予学生经济上的奖励,还能增强其成就感和自信心。 荣誉证书或奖状可以证明学生的成就,对个人品牌建设有积极作用。 创新与研究: 参加比赛可以激发学生的创新思维,推动科研项目的开展,有时甚至能促成学术论文的发表。 个人成长: 在准备和参加比赛的过程中,学生将面临压力与挑战,这有助于培养良好的心理素质和抗压能力。 自我挑战和克服困难的经历对个人成长有着深远的影响。 综上所述,参加计算机领域的比赛对于学生来说是一个全面发展的平台,不仅可以提升专业技能,还能增强团队协作、沟通、解决问题的能力,并为未来的职业生涯奠定坚实的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值