Tôi đang cố gắng tạo một HTML-wysiwyg nhỏ với JTextPane
nhưng tôi không thể nhận được BackgroundAction
để hoạt động. Tôi đang sử dụng setCharacterAttributes
trên StyledDocument
của JTextPane
nhưng có vẻ như có vấn đề. Chế độ xem là ok nhưng Document
thì không.Màu nền văn bản JTextPane không hoạt động
Đây là một mã trình diễn nhỏ hiển thị sự cố. Có 2 JTextPane
:
- tôi đặt màu nền của văn bản của tôi trong lần đầu tiên một
- Tôi lấy nội dung của
JTextPane
đầu tiên và đặt nó vào thứ hai
-> Chúng không hiển thị cùng một thứ mặc dù chúng có cùng văn bản.
Có cách nào để đặt màu nền cho văn bản được chọn hiện tại và có báo cáo JTextPane
một văn bản HTML được cập nhật không?
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();
}
});
}
}
Kết quả đầu ra (các viền đen là xung quanh mỗi JTextPane
):
phải chờ @Stanislav, ông có giải pháp cho người chăm sóc override, Selections và HightLighter, tôi nghĩ rằng đây là khoảng UImanager và XxxResources của nó, – mKorbel
@mKorbel ok cảm ơn. Tôi sẽ đợi StanislavL sau đó :-) –
Xem thêm 'HTMLDocumentEditor' của Charles Bell, trích dẫn [ở đây] (http://stackoverflow.com/a/5899816/230513). – trashgod