Witam. Chciałem się zapytać, jaka funkcja spowodować aby wszystkie dane które są wyświetlane w konsoli były wyświetlane w oknie programu. Dopiero się uczę i zrobiłem na razie coś takiego:
Programik który na gorze ramki ma pare guzików, których naciśniecie powoduje wyświetlenie się jakiegoś tekstu w oknie. No ale problem mam taki że po naciśnięciu guzika tekst wyświetla się w konsoli a nie w zbudowanym przeze mnie polu tekstowym:)
Byłbym wdzięczny gdyby ktoś podpowiedział mi jaka funkcja przekieruje strumień wyjścia do interesującego mnie miejsca np do tego pola tekstowego.
Z góry dziekuje za pomoc i pozdrawiam wszystkich programistów :)
Heh
Domyślam się, że urzywasz JTextArea. Jesli tak to wywołujesz na rzecz obiektu metode setText(text_do_stawienia) albo append(text_do_stawieniea).
Pierwsza ustawia rządany tekst a druga dołacza tekst.
Pozdrawiam BookaYashee
Witam,
po utworzeniu wątku niestety funkcja append nie działa. Wcześniej, kiedy kod był w funkcji wszystko śmigało. Jakaś rada? Dodam, że System.out.println() wyświetla tekst w konsoli
System.out.println("cos");
Text.append("cos");
problem w części rozwiązany. JTextArea nie był inicjowany podczas uruchamiania wątka.
Tylko, że teraz nie wiem jak zrobić, aby ramka z Text nie uruchamiała się za każdym razem, gdy zostanie uruchomiony wątek.
Może dodam trochę kodu:
plik implementacja.java
public class implementacja extends baza_autPOA implements Runnable {
private ORB orb;
JTextArea Text = new javax.swing.JTextArea();
public void run(){
//cos
initComponents(); // Aby To nie odpalalo się wiele razy.. tylko raz
System.out.println("sajhda2");
Text.append("------------"+"\n");
}
public implementacja(double ilosc,Auto car){
System.out.println("cos");
Text.append("cos");
}
}
public implementacja (){
};
private void initComponents(){
JFrame ramka = new JFrame();
JScrollPane jScrollPane2 = new javax.swing.JScrollPane();
ramka.getContentPane().add(Text);
ramka.getContentPane().add(jScrollPane2);
ramka.setSize(300,300);
ramka.setTitle("serwer");
Text.setAutoscrolls(true);
jScrollPane2.setViewportView(Text);
ramka.setVisible(true);
ramka.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
}
public double olej(double ilosc,Auto car){
//odpalam thread1
(new Thread(new implementacja(ilosc,car))).start();
return 0;
}
}//koniec klasy
Dodam jeszcze, że na serwerze mam:
plik Server.java
implementacja timeServant = new implementacja();
A w kliencie odpalam funkcje poprzez serwer, która znajduje się w pliku implementacja
m_server.olej(losuj, nowe_auto);
Z góry dzięki.
Zastosuj wzorzec singleton:
http://en.wikipedia.org/wiki/Singleton_pattern#Java_5_solution