Swingでは、HTMLを使用してラベルの単語のスタイルを設定できます。たとえば、ラベルの特定の単語を太字にしたり、色を変えたりしたい場合は、HTMLを使用してそれを行うことができます。
SWTに相当する機能はありますか?ラベルのテキストに「速い茶色のキツネが怠惰な犬を飛び越えた」という言葉があり、「キツネ」の色を茶色に変更したい場合、どうすればよいでしょうか。
本当に が必要な場合はLabel
、以下のコードを使用できます。StyledText
それ以外の場合は、 (コメントに記載されているように)次のことをお勧めします。
public static void main(String[] args) {
final Display display = new Display();
final Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
Label label = new Label(shell, SWT.NONE);
label.setText("Blue and not blue");
Color blue = display.getSystemColor(SWT.COLOR_BLUE);
final TextLayout layout = new TextLayout(display);
layout.setText("Blue and not blue");
final TextStyle style = new TextStyle(display.getSystemFont(), blue, null);
label.addListener(SWT.Paint, new Listener() {
@Override
public void handleEvent(Event event) {
layout.setStyle(style, 0, 3);
layout.draw(event.gc, event.x, event.y);
}
});
shell.pack();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
それを使用StyledText
すると、次のようになります。
public static void main(String[] args) {
final Display display = new Display();
final Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
StyledText text = new StyledText(shell, SWT.NONE);
text.setEditable(false);
text.setEnabled(false);
text.setText("Blue and not blue");
Color blue = display.getSystemColor(SWT.COLOR_BLUE);
StyleRange range = new StyleRange(0, 4, blue, null);
text.setStyleRange(range);
shell.pack();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}