import java.awt.Button; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.GridBagConstraints; import java.awt.Insets; import javax.swing.JColorChooser; public class Gui { private Button button; private Color color; public void createLayout() { original(); color = Color.black; button = new Button("Textfarbe"); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { color = JColorChooser.showDialog(null, "color", color); button.setForeground(color); } }); Insets insets = new Insets(0, 0, 0, 0); add(button, new GridBagConstraints(0, 2, 1, 1, 1.0, 0, GridBagConstraints.SOUTH, GridBagConstraints.HORIZONTAL, insets, 0, 0)); } public void send(String msg) { StringBuilder builder = new StringBuilder(); builder.append("[color=").append(color.getRGB()).append("]").append(msg); original(builder.toString()); } public void onMessageReceived(String text) { // Ist eine Farbe enthalten? int start = text.indexOf("[color="); if (start == -1) { original(text); return; } int end = text.indexOf(']', start); if (end == -1) { original(text); return; } // Farbe bestimmen String rgb = text.substring(start + 7, end); style = doc.addStyle("rgb", null); StyleConstants.setForeground(style, new Color(Integer.parseInt(rgb))); original(text.replace(text.substring(start, end + 1), "")); } }