| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 629 人关注过本帖
标题:[求助]字体预览功能的实现
只看楼主 加入收藏
非凡DZ
Rank: 1
等 级:新手上路
帖 子:231
专家分:0
注 册:2007-4-6
收藏
 问题点数:0 回复次数:6 
[求助]字体预览功能的实现
我想实现记事本字体对话框的预览功能
我现在做的是画了三个下拉框,第一个取得所有字体,第二个位所有字形,第三个为字号,我想在文本框中实现预览,请问该在哪里写事件呢
请高手给点思路,我现在能得到三个下拉框的值
搜索更多相关主题的帖子: 字体 预览 对话框 
2007-08-06 09:23
heilong
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:777
专家分:0
注 册:2007-6-7
收藏
得分:0 

用text.getText().setFont(你得到的值)
set....
......


风水鸡蛋壳,财去人安乐!----->
2007-08-06 09:34
非凡DZ
Rank: 1
等 级:新手上路
帖 子:231
专家分:0
注 册:2007-4-6
收藏
得分:0 
我想实现的就是我随时该下拉框的内容,而文本框的内容也随时做相应的改变

2007-08-06 09:43
heilong
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:777
专家分:0
注 册:2007-6-7
收藏
得分:0 
是的呀,你下拉框不是有监听器吗?
每个里都写上啊``

风水鸡蛋壳,财去人安乐!----->
2007-08-06 09:46
非凡DZ
Rank: 1
等 级:新手上路
帖 子:231
专家分:0
注 册:2007-4-6
收藏
得分:0 

package 记事本;

import java.awt.BorderLayout;
import java.awt.Frame;

import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JLabel;
import java.awt.*;
import 记事本.Frame1;
import javax.swing.JTextField;
import javax.swing.JComboBox;
import javax.swing.JButton;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class DialogFont extends JDialog {
JPanel panel1 = new JPanel();
JLabel lblFont = new JLabel();
JLabel lblType = new JLabel();
JLabel lblSize = new JLabel();
static Frame1 f;
JTextField txtFont = new JTextField();
JTextField txtType = new JTextField();
JTextField txtSize = new JTextField();
JComboBox cboFont = new JComboBox();
JComboBox cboType = new JComboBox();
JComboBox cboSize = new JComboBox();
JButton btnDecide = new JButton();
JButton btnCancel = new JButton();
JPanel jPanel1 = new JPanel();
JTextField txtExample = new JTextField();
JLabel lblExample = new JLabel();
int i,j,k,number;
Font font;
boolean decide=false;
//得到系统中的所有字体,将返回值放到fonts字符串数组中
String[] fonts=GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
String[] type={"常规","斜体","粗体","粗斜体"};
int[] size={8,9,10,11,12,14,16,18,20,22,24,26,28,36,48,72};
public DialogFont(Frame owner, String title, boolean modal) {
super(owner, title, modal);
try {
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
jbInit();
pack();
} catch (Exception exception) {
exception.printStackTrace();
}
}

public DialogFont() {
this(new Frame(), "DialogFont", false);
}

private void jbInit() throws Exception {
panel1.setLayout(null);
this.setResizable(false);
this.setTitle("字体");
lblFont.setFont(new java.awt.Font("Dialog", Font.PLAIN, 12));
lblFont.setText("字体");
lblFont.setBounds(new Rectangle(9, 12, 54, 25));
lblType.setFont(new java.awt.Font("Dialog", Font.PLAIN, 12));
lblType.setText("字形");
lblType.setBounds(new Rectangle(138, 12, 54, 25));
lblSize.setFont(new java.awt.Font("Dialog", Font.PLAIN, 12));
lblSize.setText("大小");
lblSize.setBounds(new Rectangle(261, 12, 54, 25));
txtFont.setEnabled(false);
txtFont.setEditable(false);
txtFont.setText("");
txtFont.setBounds(new Rectangle(9, 37, 88, 21));
txtType.setEnabled(false);
txtType.setEditable(false);
txtType.setText("");
txtType.setBounds(new Rectangle(138, 37, 88, 21));
txtSize.setEnabled(false);
txtSize.setEditable(false);
txtSize.setText("");
txtSize.setBounds(new Rectangle(261, 37, 88, 21));
cboFont.setBounds(new Rectangle(9, 72, 88, 21));
cboFont.addActionListener(new DialogFont_cboFont_actionAdapter(this));
cboType.setBounds(new Rectangle(138, 72, 88, 21));
cboType.addActionListener(new DialogFont_cboType_actionAdapter(this));
cboSize.setBounds(new Rectangle(261, 72, 88, 21));
cboSize.addActionListener(new DialogFont_cboSize_actionAdapter(this));
btnDecide.setBounds(new Rectangle(281, 113, 62, 29));
btnDecide.setFont(new java.awt.Font("Dialog", Font.PLAIN, 12));
btnDecide.setText("确定");
btnDecide.addActionListener(new DialogFont_btnDecide_actionAdapter(this));
btnCancel.setBounds(new Rectangle(281, 157, 62, 29));
btnCancel.setFont(new java.awt.Font("Dialog", Font.PLAIN, 12));
btnCancel.setText("取消");
btnCancel.addActionListener(new DialogFont_btnCancel_actionAdapter(this));
jPanel1.setBorder(BorderFactory.createEtchedBorder());
jPanel1.setBounds(new Rectangle(82, 114, 165, 77));
jPanel1.setLayout(null);
txtExample.setFont(new java.awt.Font("Dialog", Font.PLAIN, 15));
txtExample.setText("我是个例子");
txtExample.setHorizontalAlignment(SwingConstants.CENTER);
txtExample.setBounds(new Rectangle(14, 8, 137, 61));
lblExample.setFont(new java.awt.Font("Dialog", Font.PLAIN, 12));
lblExample.setText("示例");
lblExample.setBounds(new Rectangle(27, 124, 39, 43));
panel1.add(lblFont);
panel1.add(lblType);
panel1.add(txtType);
panel1.add(txtFont);
panel1.add(cboFont);
panel1.add(cboType);
panel1.add(txtSize);
panel1.add(lblSize);
panel1.add(cboSize);
panel1.add(jPanel1);
jPanel1.add(txtExample);
panel1.add(btnDecide);
panel1.add(btnCancel);
panel1.add(lblExample);
for(i=0;i<fonts.length;i++){
cboFont.addItem(fonts[i]);//将fonts数组中的所有字体添加到cboFont中
}
for(j=0;j<type.length;j++){//设置字形选项
cboType.addItem(type[j]);
}
for(k=0;k<size.length;k++){ //设置字号选项
String b = Integer.toString(size[k]);
cboSize.addItem(b);
}
this.getContentPane().add(panel1, java.awt.BorderLayout.CENTER);
//font=new Font(cboFont.getSelectedItem().toString(),number,size[cboSize.getSelectedIndex()]);
}

public void btnDecide_actionPerformed(ActionEvent e) {//确定事件
String font=txtFont.getText();//获得用户选定的字体类型
if(txtType.getText().equals("常规")){//获得用户选定的字形类型
number=Font.PLAIN;
}else if(txtType.getText().equals("斜体")){
number=Font.ITALIC;
}else if(txtType.getText().equals("粗体")){
number=Font.BOLD;
}else{
number=Font.BOLD+Font.ITALIC;
}
Integer temp=new Integer(txtSize.getText());
int size=temp.intValue();//获得用户选定的字体大小
f.font=font;//将构造Font的三个参数传给Frame1
f.type=number;
f.size=size;
f.fontSet();//调用Frame1中的字体设置方法,将文本区域中的字体改变
dispose();//关闭字体对话框
}

public void cboFont_actionPerformed(ActionEvent e) {//字体下拉菜单事件
i=cboFont.getSelectedIndex();
txtFont.setText(fonts[i]);
font=new Font(cboFont.getSelectedItem().toString(),number,size[cboSize.getSelectedIndex()]);
txtExample.setFont(font);
}

public void cboType_actionPerformed(ActionEvent e) {//字形下拉菜单事件
j=cboType.getSelectedIndex();
txtType.setText(type[j]);
font=new Font(cboFont.getSelectedItem().toString(),number,size[cboSize.getSelectedIndex()]);
txtExample.setFont(font);
}

public void cboSize_actionPerformed(ActionEvent e) {//字号下拉菜单事件
k=cboSize.getSelectedIndex();
String b = Integer.toString(size[k]);
txtSize.setText(b);
font=new Font(cboFont.getSelectedItem().toString(),number,size[cboSize.getSelectedIndex()]);
txtExample.setFont(font);
}

public void btnCancel_actionPerformed(ActionEvent e) {//取消事件
dispose();//关闭字体对话框
}
}


class DialogFont_btnCancel_actionAdapter implements ActionListener {
private DialogFont adaptee;
DialogFont_btnCancel_actionAdapter(DialogFont adaptee) {
this.adaptee = adaptee;
}

public void actionPerformed(ActionEvent e) {
adaptee.btnCancel_actionPerformed(e);
}
}


class DialogFont_cboSize_actionAdapter implements ActionListener {
private DialogFont adaptee;
DialogFont_cboSize_actionAdapter(DialogFont adaptee) {
this.adaptee = adaptee;
}

public void actionPerformed(ActionEvent e) {
adaptee.cboSize_actionPerformed(e);
}
}


class DialogFont_cboType_actionAdapter implements ActionListener {
private DialogFont adaptee;
DialogFont_cboType_actionAdapter(DialogFont adaptee) {
this.adaptee = adaptee;
}

public void actionPerformed(ActionEvent e) {
adaptee.cboType_actionPerformed(e);
}
}


class DialogFont_cboFont_actionAdapter implements ActionListener {
private DialogFont adaptee;
DialogFont_cboFont_actionAdapter(DialogFont adaptee) {
this.adaptee = adaptee;
}

public void actionPerformed(ActionEvent e) {
adaptee.cboFont_actionPerformed(e);
}
}


class DialogFont_btnDecide_actionAdapter implements ActionListener {
private DialogFont adaptee;
DialogFont_btnDecide_actionAdapter(DialogFont adaptee) {
this.adaptee = adaptee;
}

public void actionPerformed(ActionEvent e) {
adaptee.btnDecide_actionPerformed(e);
}
}
这位仁兄 你看看我这么写有什么不妥 我现在运行字体对话框有异常 我实在不知怎么改了


2007-08-06 10:03
heilong
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:777
专家分:0
注 册:2007-6-7
收藏
得分:0 
出现什么异常,太长了.发出来```````````````

风水鸡蛋壳,财去人安乐!----->
2007-08-06 10:33
heilong
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:777
专家分:0
注 册:2007-6-7
收藏
得分:0 

number=Font.BOLD+Font.ITALIC;
你这里相加,不行啊`````````
字体名称可以是字体外观名称或字体系列名称。它与样式一起使用,以查找合适的字体外观。如果指定了字体系列名称,则使用样式参数从系列中选择最合适的外观。如果指定了字体外观名称,则合并外观的样式和样式参数,以便从同一个系列查找最匹配的字体。例如,如果指定外观名称 "Arial Bold" 及样式 Font.ITALIC,则字体系统在 "Arial" 系列中寻找既是粗体又是斜体的外观,可以将字体实例与物理字体外观 "Arial Bold Italic" 相关联。将样式参数与指定外观的样式合并,而不是执行添加或减去操作。这意味着,指定粗体外观和粗体样式并不会双倍加粗字体,而指定粗体外观和普通样式也不会变细字体。

如果无法找到所要求样式的外观,则字体系统可以应用样式设计算法来获得所需的样式。例如,如果要求 ITALIC,但是没有可用的斜体外观,则可以通过算法使普通外观倾斜。

字体名称查找是区分大小写的,可以使用 US 语言环境的大小写转换规则。


风水鸡蛋壳,财去人安乐!----->
2007-08-06 10:49
快速回复:[求助]字体预览功能的实现
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027046 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved