2

Swingでは、HTMLを使用してラベルの単語のスタイルを設定できます。たとえば、ラベルの特定の単語を太字にしたり、色を変えたりしたい場合は、HTMLを使用してそれを行うことができます。

SWTに相当する機能はありますか?ラベルのテキストに「速い茶色のキツネが怠惰な犬を飛び越えた」という言葉があり、「キツネ」の色を茶色に変更したい場合、どうすればよいでしょうか。

4

1 に答える 1

7

本当に が必要な場合は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();
}
于 2012-09-08T14:03:52.260 に答える