Jtextarea如何设置不同字体、颜色

如题,就像一些论坛上那样,能在一个框里面设置不同的字体、颜色,好像是用什么JTextPane,但该怎么做呢???最好给段最简单的例子代码,谢谢!1楼的,你那个代码不行啊,... 如题,就像一些论坛上那样,能在一个框里面设置不同的字体、颜色,好像是用什么JTextPane,但该怎么做呢???

最好给段最简单的例子代码,谢谢!
1楼的,你那个代码不行啊,只能设置一种字体和颜色,不能在里面设置两种以上的字体和颜色
展开
 我来答
cliff77
2008-01-02 · TA获得超过482个赞
知道小有建树答主
回答量:276
采纳率:0%
帮助的人:0
展开全部
JTextArea本身不具备这样的功能,它是纯文本组件,你可以使用JTextPane,通过操作Document文档来控制JTextPane显示的内容,下面的代码在一个JTextPane中显示了一个图标,三行文字,每行用不同的颜色和大小显示:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.text.*;
import java.io.*;

public class Test {
JFrame frame;
JTextPane textPane;
File file;
Icon image;

public Test(){
frame = new JFrame("JTextPane");
textPane = new JTextPane();
file = new File("./classes/test/icon.gif");
image = new ImageIcon(file.getAbsoluteFile().toString());
}

public void insert(String str, AttributeSet attrSet) {
Document doc = textPane.getDocument();
str ="\n" + str ;
try {
doc.insertString(doc.getLength(), str, attrSet);
}
catch (BadLocationException e) {
System.out.println("BadLocationException: " + e);
}
}

public void setDocs(String str,Color col,boolean bold,int fontSize) {
SimpleAttributeSet attrSet = new SimpleAttributeSet();
StyleConstants.setForeground(attrSet, col);
//颜色
if(bold==true){
StyleConstants.setBold(attrSet, true);
}//字体类型
StyleConstants.setFontSize(attrSet, fontSize);
//字体大小
insert(str, attrSet);
}

public void gui() {
textPane.insertIcon(image);
setDocs("第一行的文字",Color.red,false,20);
setDocs("第二行的文字",Color.BLACK,true,25);
setDocs("第三行的文字",Color.BLUE,false,20);
frame.getContentPane().add(textPane, BorderLayout.CENTER);
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}});
frame.setSize(200,300);
frame.setVisible(true);
}
public static void main(String[] args) {
Test test = new Test();
test.gui();
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
韩韩爱看剧
2007-12-29 · TA获得超过122个赞
知道小有建树答主
回答量:96
采纳率:0%
帮助的人:0
展开全部
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class ArtFont extends JFrame implements ActionListener {
JComboBox fontType, fontSize;

JCheckBox boldBx;// 粗体按钮

JCheckBox italicBx;// 斜体按钮

JButton colorBtn;// 颜色按钮;

String[] fontNames;// 字体名称;

String[] fontSizes;// 字体尺寸;

JLabel label;// 输入提示标签;

JTextField inputText;// 文字输入框;

JTextArea txtArea;// 文字显示区;

JPanel fontPanel;// 字体设置;

JPanel showPanel;// 显示效果区

Font font;

int boldStyle, italicStyle, underlineStyle;

int fontSizeStyle;

String fontNameStyle;

Color colorStyle = Color.black;// 设置字体的默认颜色为黑色;

public ArtFont() {
super("字体设置");
// 设置默认字体
boldStyle = 0;
italicStyle = 0;
underlineStyle = 0;
fontSizeStyle = 10;
fontNameStyle = "宋体";
font = new Font(fontNameStyle, boldStyle + italicStyle, fontSizeStyle);

fontPanel = new JPanel();
fontPanel.setLayout(new FlowLayout());
// 设置字体名字
GraphicsEnvironment ge = GraphicsEnvironment
.getLocalGraphicsEnvironment();
fontNames = ge.getAvailableFontFamilyNames();// 获得系统中所有字体的名字;
fontType = new JComboBox(fontNames);
fontType.setEditable(false);
fontType.setMaximumRowCount(10);
fontType.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
// 实现监听字体名字改变的事件
fontNameStyle = (String) e.getItem();// 程序段1
font = new Font(fontNameStyle, boldStyle + italicStyle,
fontSizeStyle);
txtArea.setFont(font);
}
});

// 设置字体大小
fontSizes = new String[63];
for (int i = 0; i < 63; i++) {
fontSizes[i] = Integer.toString((i + 10));
}
fontSize = new JComboBox(fontSizes);
fontSize.setEditable(false);
fontSize.setMaximumRowCount(10);
fontSize.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
// 实现监听字体大小改变的方法
// 程序段2
fontSizeStyle =Integer.parseInt(e.getItem().toString());
font = new Font(fontNameStyle, boldStyle + italicStyle,
fontSizeStyle);
txtArea.setFont(font);
}
});

// 设置粗体选择按钮;
boldBx = new JCheckBox("粗体");
boldBx.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
// 实现监听选择粗体状态改变的方法
if(e.getStateChange()==1) boldStyle=1;
else boldStyle=0;

font = new Font(fontNameStyle, boldStyle + italicStyle,
fontSizeStyle);
txtArea.setFont(font);// 程序段3
}
});

// 设置斜体选择按钮;
italicBx = new JCheckBox("斜体");
italicBx.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
// 实现监听选择斜体状态改变的方法
if(e.getStateChange()==1) italicStyle=2;
else italicStyle=0;

font = new Font(fontNameStyle, boldStyle + italicStyle,
fontSizeStyle);
txtArea.setFont(font);// 程序段4
}
});
// 设置颜色选择;
colorBtn = new JButton("颜色");
colorBtn.addActionListener(this);
// 设置字体面板;
fontPanel.add(fontType);
fontPanel.add(fontSize);
fontPanel.add(boldBx);
fontPanel.add(italicBx);
fontPanel.add(colorBtn);

// 设置输入提示标签
label = new JLabel("输入");
// 设置文本输入框;
inputText = new JTextField(30);
inputText.addActionListener(this);
// 设置文本显示区;
txtArea = new JTextArea(10, 80);// 20行80列;
txtArea.setFont(font);

// 设置文本面板;
showPanel = new JPanel();
showPanel.add(label);
showPanel.add(inputText);
showPanel.setLayout(new FlowLayout());
showPanel.add(new JScrollPane(txtArea));
// 设置容器;
Container container = getContentPane();
container.setLayout(new BorderLayout());
container.add(fontPanel, BorderLayout.NORTH);
container.add(showPanel, BorderLayout.CENTER);
setSize(500, 300);
setVisible(true);
}

public void actionPerformed(ActionEvent e) {
if (e.getSource() == colorBtn) {// 改变颜色
colorStyle = JColorChooser.showDialog(this, "选择字体颜色", colorStyle);
colorBtn.setForeground(colorStyle);
txtArea.setForeground(colorStyle);
} else if (e.getSource() == inputText) {// 将输入文字在文字显示区表示;
txtArea.setText(inputText.getText());
}
}

public static void main(String args[]) {
ArtFont artFont = new ArtFont();
artFont.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
longrm
2007-12-29
知道答主
回答量:5
采纳率:0%
帮助的人:3.6万
展开全部
是啊,我也想知道,好久都没搞明白,等待高手!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式