Jtextarea如何设置不同字体、颜色
如题,就像一些论坛上那样,能在一个框里面设置不同的字体、颜色,好像是用什么JTextPane,但该怎么做呢???最好给段最简单的例子代码,谢谢!1楼的,你那个代码不行啊,...
如题,就像一些论坛上那样,能在一个框里面设置不同的字体、颜色,好像是用什么JTextPane,但该怎么做呢???
最好给段最简单的例子代码,谢谢!
1楼的,你那个代码不行啊,只能设置一种字体和颜色,不能在里面设置两种以上的字体和颜色 展开
最好给段最简单的例子代码,谢谢!
1楼的,你那个代码不行啊,只能设置一种字体和颜色,不能在里面设置两种以上的字体和颜色 展开
3个回答
展开全部
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();
}
}
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();
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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);
}
}
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);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是啊,我也想知道,好久都没搞明白,等待高手!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |