について私が書いてきたアプリケーションにJTextPaneの(または1つの私のサブ分類バージョン)を使用してきた、と私はスタイルに取り組んできました。私のプログラムは、私が望むやり方ではなく、AttributeSet.containsAttributes(AttributeSet属性)メソッドのバグと思われる振る舞いを追跡しました。Javaでバグが見つかりましたか?属性セット
import javax.swing.JTextPane;
import javax.swing.text.StyleConstants;
import javax.swing.text.Style;
public class StyleBug {
public static void main(String[] args) {
JTextPane textPane = new JTextPane();
textPane.setText("This is a test string");
Style bold = textPane.addStyle(BOLD, null);
StyleConstants.setBold(bold, true);
Style italic = textPane.addStyle(ITALIC, null);
StyleConstants.setItalic(italic, true);
int start = 5;
int end = 10;
textPane.getStyledDocument().setCharacterAttributes(start, end - start, textPane.getStyle(BOLD), false);
textPane.getStyledDocument().setCharacterAttributes(start, end - start, textPane.getStyle(ITALIC), false);
for(int i = start; i < end; i++)
System.out.println(textPane.getStyledDocument().getCharacterElement(i).getAttributes()
.containsAttributes(textPane.getStyle(BOLD))); //all print false
}
private static final String BOLD = "Bold";
private static final String ITALIC = "Italic";
}
これはバグですか、それとも何か不足していますか?
静的な初期化について言及していますか? – Mikaveli
textPane.getStyle(BOLD)とtextPane.getStyle(ITALIC)、 –
@Mikaveli、私が言及しているバグは、Bold属性のスタイルを適用したにもかかわらず、containsAttributesメソッドはテキストが太字ではないことを示しています。 – Mark