我有一个,有时JTextPane
我想改变它。foreground
问题是,如果切换ContentType
到JTextPane
,text/html
我的电话jTextPane.setForeground(myColor)
不会出现。我该如何解决?
SSCCE:
public class TextAreaTest {
public static void main(String[] a) {
final JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JTextPane textArea = new JTextPane();
textArea.setEditable(false);
textArea.setFocusable(false);
textArea.setText("<html>First line text<br>Second line text</html>");
final JPanel panel = new JPanel(new FlowLayout());
final JCheckBox htmlOnOff = new JCheckBox("HTML");
htmlOnOff.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
textArea.setContentType(htmlOnOff.isSelected() ? "text/html" : "text/plane");
textArea.setText("<html>First line text<br>Second line text</html>");
}
});
JToggleButton buttonRed = new JToggleButton("Red");
buttonRed.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
textArea.setForeground(Color.RED);
}
});
JToggleButton buttonGreen = new JToggleButton("Green");
buttonGreen.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
textArea.setForeground(Color.GREEN);
}
});
JToggleButton buttonBlue = new JToggleButton("Blue");
buttonBlue.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
textArea.setForeground(Color.BLUE);
}
});
panel.add(htmlOnOff);
panel.add(buttonRed);
panel.add(buttonGreen);
panel.add(buttonBlue);
ButtonGroup buttonGroup = new ButtonGroup();
buttonGroup.add(buttonRed);
buttonGroup.add(buttonBlue);
buttonGroup.add(buttonGreen);
JPanel contentPane = new JPanel();
contentPane.setLayout(new BorderLayout(0, 0));
contentPane.add(panel, BorderLayout.NORTH);
contentPane.add(textArea, BorderLayout.CENTER);
frame.setContentPane(contentPane);
frame.setUndecorated(true);
Dimension size = new Dimension(275, 80);
frame.setSize(size);
frame.setPreferredSize(size);
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
frame.setVisible(true);
System.out.println(frame.getSize());
}
});
}
}
UPDATE#1
我注意到它JLabel
能够做我想做的事。但我不能使用它:(