hallöchen
ich bin gerade dabei ein kleines gui zu basteln was sich optional in eine meiner anwendungen als terminal einpassen soll (wenn grad keins da ist). dafür würde ich gern als ausgabe system.out und system.err darstellen (ggf auch noch eine kopie von system.in) und über eine eingabe dinge an system.In füttern.
ich bin soweit bereits gekommen, dass ich die ausgaben von out und err angezeigt bekomme, leider habe ich keine ahnung wie ich text an in übergebe. (wird ja sicherlich so ähnlich funktionieren, nur gibt es da ein get(bytes) oder so etwas?)
Der Code sieht aktuell so aus:
CustomOutputStream
ich bin gerade dabei ein kleines gui zu basteln was sich optional in eine meiner anwendungen als terminal einpassen soll (wenn grad keins da ist). dafür würde ich gern als ausgabe system.out und system.err darstellen (ggf auch noch eine kopie von system.in) und über eine eingabe dinge an system.In füttern.
ich bin soweit bereits gekommen, dass ich die ausgaben von out und err angezeigt bekomme, leider habe ich keine ahnung wie ich text an in übergebe. (wird ja sicherlich so ähnlich funktionieren, nur gibt es da ein get(bytes) oder so etwas?)
Der Code sieht aktuell so aus:
Java:
public class Terminal extends JFrame{
private JTextArea outtextArea;
public Terminal(){
try{
JFrame frame = new JFrame();
//Output
outtextArea = new JTextArea();
outtextArea.setFont(new Font("monospaced", Font.ITALIC, 12));
outtextArea.setEnabled(false);
outtextArea.setBackground(Color.BLACK);
outtextArea.setForeground(Color.WHITE);
outtextArea.setBorder(BorderFactory.createEmptyBorder());
//
PrintStream printStream1 = new PrintStream(new CustomOutputStream(outtextArea)); //Stream
System.setOut(printStream1);
System.setErr(printStream1);
JScrollPane jsp = new JScrollPane(outtextArea);
frame.add(jsp);
//Input
JTextField input = new JTextField();
input.setBackground(Color.BLACK);
input.setForeground(Color.WHITE);
input.setBorder(BorderFactory.createEmptyBorder());
frame.add(input, BorderLayout.SOUTH);
frame.pack();
frame.setSize(1900,1050);
frame.setExtendedState(frame.getExtendedState() | JFrame.MAXIMIZED_BOTH);
frame.getContentPane().setBackground(Color.BLACK);
frame.setVisible( true );
input.addActionListener(new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e){
String in = input.getText();
input.setText(null);
}
});
}catch (Exception e){
System.err.println(e);
}
}
public void clear(){
outtextArea.setText(null);
}
}
Java:
public class CustomOutputStream extends OutputStream {
private JTextArea textArea;
public CustomOutputStream(JTextArea textArea) {
this.textArea = textArea;
}
@Override
public void write(int b) throws IOException {
textArea.append(String.valueOf((char)b));
textArea.setCaretPosition(textArea.getDocument().getLength());
}
}
Zuletzt bearbeitet: