字体颜色由3个单选按钮选择。
当我按下按钮,然后makeStyleSheet函数做出一个CSS。
在这个CSS中,只定义了一种颜色。
但字体颜色没有改变....
为什么?
@SuppressWarnings("javadoc")
public class Sample extends JFrame {
JRadioButton[] radio;
JTextPane textPane;
HTMLEditorKit kit;
HTMLDocument doc;
JButton btnNewButton;
ButtonGroup group;
List list;
/**
* @param args
*/
public static void main(String[] args) {
Sample frame = new Sample();
ActionListener action = new MyButtonAction(frame.kit, frame.doc, frame.list);
frame.addAction(action);
frame.setVisible(true);
}
private void addAction(ActionListener action) {
btnNewButton.addActionListener(action);
}
@SuppressWarnings("javadoc")
public Sample() {
doc = new HTMLDocument();
textPane = new JTextPane();
kit = new HTMLEditorKit();
setBounds(100, 100, 450, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().setLayout(null);
textPane.setEditorKit(kit);
textPane.setDocument(doc);
textPane.setContentType("text/html");
textPane.setBounds(12, 13, 282, 229);
getContentPane().add(textPane);
btnNewButton = new JButton("HTML");
btnNewButton.setBounds(303, 211, 117, 31);
getContentPane().add(btnNewButton);
group = new ButtonGroup();
list = new ArrayList();
JRadioButton rdbtnRed = new JRadioButton("apple", true);
JRadioButton rdbtnYellow = new JRadioButton("banana");
JRadioButton rdbtnGreen = new JRadioButton("mellon");
list.add(rdbtnRed);
list.add(rdbtnYellow);
list.add(rdbtnGreen);
group.add(rdbtnRed);
group.add(rdbtnYellow);
group.add(rdbtnGreen);
rdbtnRed.setBounds(302, 161, 113, 21);
getContentPane().add(rdbtnRed);
rdbtnYellow.setBounds(302, 138, 113, 21);
getContentPane().add(rdbtnYellow);
rdbtnGreen.setBounds(302, 115, 113, 21);
getContentPane().add(rdbtnGreen);
}
}
class MyButtonAction implements ActionListener {
HTMLEditorKit kit;
HTMLDocument doc;
List list;
public MyButtonAction(HTMLEditorKit kit, HTMLDocument doc, List list) {
this.kit = kit;
this.doc = doc;
this.list = list;
}
@Override
public void actionPerformed(ActionEvent e) {
String tag = null;
for(JRadioButton btn : list) {
if (btn.isSelected()){
tag = btn.getText();
}
}
kit.setStyleSheet(makeStyleSheet(tag));
try {
kit.insertHTML(doc, doc.getLength(), "apple,banana,mellon", 0, 0, null);
} catch (IOException e1) {
e1.printStackTrace();
} catch (BadLocationException e1) {
e1.printStackTrace();
}
}
private StyleSheet makeStyleSheet(String tag) {
StyleSheet styleSheet = new StyleSheet();
styleSheet.addRule("." + tag + " {color: red;}");
return styleSheet;
}
}
+0
textPane.setForeground(Color.BLUE);应该工作 –
+1
不要使用setBounds()。 Swing旨在与布局经理一起使用。 –