java SWT点击button事件 textarea字体局部颜色变化 30
在javaGUISWT中,如何让我点击button的时候,在textarecontent里面的文字局部变色,或者局部粗体,总之能看出来某一行,或者某几行的颜色变化。如何实...
在javaGUI SWT中,如何让我点击button的时候,在textare content 里面的文字局部变色,或者局部粗体,总之能看出来某一行,或者某几行的颜色变化。如何实现,请高人指点。我用的不是JFRAME,而是JFACE的东西。谢谢了。
Jframe能解决也可以,最好两种都有。用java语言实现谢谢了 展开
Jframe能解决也可以,最好两种都有。用java语言实现谢谢了 展开
展开全部
//刚解决的,给你贴上看看吧、、、
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();
}
}
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();
}
}
追问
谢谢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询