JTextPane
で小さなHTML-wysiwygを作成しようとしていますが、BackgroundAction
を動作させることができません。私はJTextPane
のStyledDocument
にsetCharacterAttributes
を使用していますが、問題があるようです。ビューはOKですが、Document
はそうではありません。JTextPaneのテキストの背景色が機能しない
ここに、問題を示す小さなデモコードがあります。 2 JTextPane
があります
- 私が最初
JTextPane
のテキストを取得し、二番目の
の上に設定された第1の1
現在選択されているテキストに背景色を設定し、JTextPane
に更新されたHTMLテキストを報告する方法はありますか?
import java.awt.Color;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextPane;
import javax.swing.SwingUtilities;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyledDocument;
public class TestDifferentStyles {
private void initUI() {
JFrame frame = new JFrame(TestDifferentStyles.class.getSimpleName());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JTextPane textPane = new JTextPane();
final JTextPane textPane2 = new JTextPane();
textPane2.setEditable(false);
textPane.setContentType("text/html");
textPane2.setContentType("text/html");
textPane.setText("<html><head></head><body><p>Hello world</p></body></html>");
SimpleAttributeSet set = new SimpleAttributeSet();
StyleConstants.setForeground(set, Color.GREEN);
StyleConstants.setBackground(set, Color.BLACK);
((StyledDocument) textPane.getDocument()).setCharacterAttributes(0, textPane.getDocument().getLength(), set, false);
JPanel panel = new JPanel(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.BOTH;
gbc.weightx = 1.0;
gbc.weighty = 1.0;
panel.add(textPane, gbc);
panel.add(textPane2, gbc);
frame.add(panel);
frame.setSize(500, 400);
frame.setVisible(true);
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
System.err.println(textPane.getText());
textPane2.setText(textPane.getText());
}
});
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new TestDifferentStyles().initUI();
}
});
}
}
出力結果(黒枠がそれぞれJTextPane
の周りにある):ここでは
は@Stanislavを待つ必要が、彼はオーバーライド介護者のためのソリューションを持っている、選択とHightLighterは、私は、これはUIManagerを使っ及びそのXxxResources、 – mKorbel
@mKorbel OKおかげについてだと思います。私はStanislavLを待つつもりです:-) –
チャールズ・ベルの「HTMLDocumentEditor」、[here](http://stackoverflow.com/a/5899816/230513)も参照してください。 – trashgod