java SWT点击button事件 textarea字体局部颜色变化 30

在javaGUISWT中,如何让我点击button的时候,在textarecontent里面的文字局部变色,或者局部粗体,总之能看出来某一行,或者某几行的颜色变化。如何实... 在javaGUI SWT中,如何让我点击button的时候,在textare content 里面的文字局部变色,或者局部粗体,总之能看出来某一行,或者某几行的颜色变化。如何实现,请高人指点。我用的不是JFRAME,而是JFACE的东西。谢谢了。
Jframe能解决也可以,最好两种都有。用java语言实现谢谢了
展开
 我来答
dei比
2013-04-14
知道答主
回答量:32
采纳率:0%
帮助的人:9.8万
展开全部
//刚解决的,给你贴上看看吧、、、
package editor;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JColorChooser;
import javax.swing.JTextPane;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.Document;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyleContext;
import org.eclipse.swt.SWT;
import org.eclipse.swt.awt.SWT_AWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class Editor {
public static void main(String[] args) {
final Display display = Display.getDefault();
final Shell shell = new Shell();
shell.setSize(800, 600);
shell.setText("SWT_AWT_Swing Bridge");

//------------------新插入的界面核心代码----------//
shell.setLayout(null);
Composite comp = new Composite(shell, SWT.EMBEDDED);//SWT.EMBEDDED必须
comp.setSize(800, 600);
comp.setLocation(0,0);

final java.awt.Frame frame = SWT_AWT.new_Frame(comp);//只能放Frame不能放JFrame

//*******************现在frame里面可以任意放AWT和Swing中的组件*************//

frame.setLayout(null);
final JTextPane editorPane = new JTextPane();// 实例化一个文本编辑的控件
editorPane.setSize(800, 500);
editorPane.setLocation(0, 100);
final JButton button = new JButton("Change");
button.setSize(100,100);
button.setLocation(0, 0);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JColorChooser colorChooser = new JColorChooser();// 根据所选颜色进行设置
Color color = colorChooser.showDialog(null, "字体颜色", Color.BLACK);// 得到所选颜色
Document document = editorPane.getDocument();// 得到编辑器中的文档
StyleContext sc = StyleContext.getDefaultStyleContext();// 添加一个可以设置样式的类
AttributeSet aset = sc.addAttribute(SimpleAttributeSet.EMPTY,
StyleConstants.Foreground, color);// 为所添加的样式类添加字体颜色
Font font = new Font("隶书", Font.BOLD, 30);
aset = sc.addAttribute(aset, StyleConstants.Family,
font.getFamily());// 为添加的样式类添加字体
aset = sc.addAttribute(aset, StyleConstants.FontSize, 30);// 设置字体的大小
try {
int start = editorPane.getSelectionStart();
int end = editorPane.getSelectionEnd();
String str = document.getText(start, end - start);
document.remove(start, end - start);// 由于没找到直接设置所选字的方法,只有先移除原来的字符串
document.insertString(start, str, aset);// 重新插入字符串,并按新设置的样式进行插入
} catch (Exception exc) {
exc.printStackTrace();
}
}
});
frame.add(editorPane);
frame.add(button);
//*****************************************************************//
//------------------END------------------------//

shell.layout();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}
追问
谢谢
lh502101107
2012-08-15 · TA获得超过840个赞
知道小有建树答主
回答量:334
采纳率:100%
帮助的人:199万
展开全部
textarea是不能实现这个功能的。你可以用jeditorPane来实现,但是如楼上所说,必须用到html的相关知识。jeditorPane实现局部文字变色也是通过解析其中的html来实现的。
更多追问追答
追问
那请问,什么可以实现这一功能如果不用html,无论swing 还是swt
追答
都不行。只能通过刚才的说的html实现。java里面没有提供你想要的那种功能。你在做记事本之类的么?我以前也试过,当时也没找到其他组件可以实现类似的功能。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友9e887f2e2
2012-08-15 · 超过48用户采纳过TA的回答
知道小有建树答主
回答量:137
采纳率:0%
帮助的人:91.2万
展开全部
是swt还是swing是支持html的..意思是字体颜色大小格式全都可以,比如一个button就能换行粗体等...至于显示应该也支持.就算textarea不支持的话jeditorPane一定可以,,需要一些html基础
追问
我用jtextpane能实现这个么···
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式