# Farbige Ausgabe in der Standardausgabe



## Stefanaecbs (19. Nov 2005)

Hallo, ich bin Java-newbie und habe folgendes Problem:

ich möchte gerne mit System.out.println("blablabla"); einen Text ausgeben , der allerdings nicht weiß sondern farbig sein soll. Wie mache ich das ? Hab mir im Internet schon nen Wolf gesucht aber nichts gefunden :-( ; Ich hoffe ihr könnt mir helfen !


----------



## bygones (19. Nov 2005)

mit java wirst du da nicht glücklich... ist ne Sache der Konsole - keine ahnung ob das überhaupt geht. jdf gibt es in java keinen befehl dafür !


----------



## André Uhres (19. Nov 2005)

Ich möchte gern wissen, wieso blablabla farbig sein soll  :roll:


----------



## Stefanaecbs (19. Nov 2005)

...weils mir bunt einfach besser gefällt als weiß.....


gibts denn da wirklich keine Möglichkeit für ? Ich dahcte da an irgendwelche Escape-characters.....


----------



## L-ectron-X (20. Nov 2005)

Die Java-Console ist wirklich nur zur reinen Textausgabe (ASCII). Sie kann direkt in Java nicht farbig dargestellt werden.


----------



## André Uhres (20. Nov 2005)

Du musst halt deine eigene Konsole machen. Zum Beispiel:

```
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
public class TestKonsole {
    public TestKonsole(){
        Console console = new Console();
        for (int j = 0; ; j++) {
            console.setModal(true); //jede Ausgabe wartet auf Eingabe
            console.putConsole("");
            in = console.getConsole();
            while(!in.equals("") && !in.equalsIgnoreCase("end")){
                console.putConsole("<font color=blue> " + in + "
");
                in = console.getConsole();
            }
            if(in.equalsIgnoreCase("end")) break;
            //jetz kommt nur Ausgabe ohne Unterbrechung:
            console.setModal(false);
            arr = new String[]{"a"+j, "b"+j, "c"+j, "d"+j, "e"+j, "f"+j};
            for (int i = 0; i < arr.length; i++) {
                console.putConsole("<font color=red> " + arr[i] + "
");
            }
        }
    }
    public static void main(String[] args) {new TestKonsole();}
    private String in = " ";
    private String[] arr ;
}
class Console extends JDialog {
    public Console(){
        setUndecorated(true);
        setModal(true);
        editorPane = new JEditorPane();
        editorPane.setEditable(false);
        editorPane.setContentType("text/html");
        text = new StringBuilder();
        text.append("<html><body>");
        getContentPane().add(new JScrollPane(editorPane));
        input = new JTextField();
        input.setPreferredSize(new Dimension(350,25));
        input.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                inputMessage = input.getText().trim();
                dispose();
            }
        });
        getContentPane().add(input, BorderLayout.NORTH);
        setSize(400,300);
        setLocationRelativeTo(null);
    }
    public void putConsole(String str){
        text.insert(0, str);
        editorPane.setText(text.toString());
        input.setText("");
        setVisible(true);
        input.requestFocusInWindow();
    }
    public String getConsole(){
        return inputMessage;
    }
    public void setModal(boolean modal){
        dispose();
        super.setModal(modal);
    }
    private StringBuilder text;
    private JEditorPane editorPane;
    private JTextField input;
    private String inputMessage;
}
```


----------



## L-ectron-X (20. Nov 2005)

Eventuell würde es auch funktionieren, wenn der Bildschirm-Treiber für DOS (Ansi.sys) beim Systemstart geladen wird und dann über die Klasse Runtime an die Methode exec() eine PROMPT-Anweisung zur Farbänderung für DOS übergeben wird.
Damit wäre es möglich den Hintergrund und den Text farbig zu gestalten. Allerdings ist das ziemlich aufwändig und plattformabhängig.


----------



## Ilja (21. Nov 2005)

hier die lösung - funktioniert jedoch nur unter windows und auch nur für das gesamte fenster - d.h. du kannst nicht die eine zeile blau und die nächste rot machen!:

führe mit java einen systembefehl aus (exec):

```
COLOR X
```
X = Hexadezimal (0-F)

willst du auch nicht die Hintergrundfarbe ändern, dann:

```
COLOR YX
```
Y = hintergrund, X = vordergrund


----------

