我一直在使用一個JTextPane(或者我的一個子版本),因此我一直在使用樣式。我的程序沒有按照我想要的方式行事,我跟蹤了我認爲是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,我提到的錯誤是,containsAttributes方法表示文本不是粗體,即使我使用了Bold屬性的樣式。 – Mark