Hey Leute, ich habe schon wieder ein Problem was ich nicht vernünftig lösen kann.
Ich will die System.out Ausgabe von der Console in eine Textarea in der Gui umleiten. Das klappt soweit auch so gut über einen erstellten Printstream.
Die System.out Ausgaben kommen aus einer methode die erst aufgerufen werden soll wenn ein bestimmter Button gedrückt wird, was durch den Aktionlistener auch funktioniert.
Aber leider nur beim debuggen, was ich absolut nicht verstehe :/. Der Programmablauf sollte doch beim Debuggen identisch sein?
Hier mal mein Code :
Playground.isVisible wird im ActionListener auf true gesetzt.
Gamelogic() ist die methode mit den System.out Ausgaben.
Hier der Code davon :
Und er macht das auch so wie geplant, aber halt nur beim Debuggen.
Ich hoffe es kann mir jemand einen Tipp geben.
Ich will die System.out Ausgabe von der Console in eine Textarea in der Gui umleiten. Das klappt soweit auch so gut über einen erstellten Printstream.
Die System.out Ausgaben kommen aus einer methode die erst aufgerufen werden soll wenn ein bestimmter Button gedrückt wird, was durch den Aktionlistener auch funktioniert.
Aber leider nur beim debuggen, was ich absolut nicht verstehe :/. Der Programmablauf sollte doch beim Debuggen identisch sein?
Hier mal mein Code :
Code:
public class LoadGui
{
public static Playground testPlayground = new Playground();
public static void main(String[] args)
{
StartScreen startScreen = new StartScreen();
PrintStream someOtherStream = new PrintStream(System.out)
{
public void println(String s)
{
Playground.onEvent(s);
}
public void println(int i)
{
Playground.onEvent(i);
}
};
System.setOut(someOtherStream);
boolean t = true;
while(t==true)
{
if(testPlayground.isVisible())
{
GameLogic.logic();
t=false;
}
}
}
Playground.isVisible wird im ActionListener auf true gesetzt.
Gamelogic() ist die methode mit den System.out Ausgaben.
Hier der Code davon :
Code:
public PlayerNames()
{
super("Spielernamen");
setVisible(true);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
int frameWidth = 300;
int frameHeight = 300;
setSize(frameWidth, frameHeight);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
int x = (d.width - getSize().width) / 2;
int y = (d.height - getSize().height) / 2;
setLocation(x, y);
Container cp = getContentPane();
cp.setLayout(null);
cp.setBackground(Color.WHITE);
textfield1.setBounds(20, 0, 261, 44);
textfield1.setText("Hier können Sie die Spielernamen eingeben.");
cp.add(textfield1);
textfield2.setBounds(16, 56, 62, 20);
textfield2.setText("Spieler 1 :");
cp.add(textfield2);
jTextField1.setBounds(82, 58, 150, 20);
cp.add(jTextField1);
button.setBounds(93, 206, 115, 25);
button.setText("Spiel starten");
button.setMargin(new Insets(2, 2, 2, 2));
button.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
button_ActionPerformed(evt);
}
private void button_ActionPerformed(ActionEvent evt)
{
LoadGui.setPlayerOneNameString(jTextField1.getText());
LoadGui.testPlayground.setVisible(true);
dispose();
}
});
cp.add(button);
Und er macht das auch so wie geplant, aber halt nur beim Debuggen.
Ich hoffe es kann mir jemand einen Tipp geben.