|
You last visited: Today at 06:05
Advertisement
NeedHelp -Java Programmierung
Discussion on NeedHelp -Java Programmierung within the General Coding forum part of the Coders Den category.
08/25/2012, 17:35
|
#1
|
elite*gold: 40
Join Date: Dec 2007
Posts: 651
Received Thanks: 1,737
|
NeedHelp -Java Programmierung
Heyho Leute.. ich bräuchte mal eure Hilfe..
Ich habe zwei Klassen.. eine Hauptklasse, in der ein GUI erzeugt wird und eine Klasse, die in der Hauptklasse als Objekt benutzt wird.
Dieses Obejekt ist Runnable und wird als Thread gestartet.
Nun soll aber der Thread aus der run() Methode heraus im GUI etwas verändern..
ich komm überhaupt nichmehr weiter..
Invoke & so bekomm ich nur hin, wenn der Thread direkt in der Klasse definiert wird (also die run() Methode in der Klasse ist -), wo auch der die das GUI ist...
Wär echt cool, wenn mir wer helfen könnte ... :/
Liebe Grüße.
|
|
|
08/25/2012, 19:07
|
#2
|
elite*gold: 144
Join Date: May 2007
Posts: 62,459
Received Thanks: 29,541
|
GUI Änderungen in nem Thread müssen über den EDT laufen:
Code wär auch gut
|
|
|
08/25/2012, 19:16
|
#3
|
elite*gold: 40
Join Date: Dec 2007
Posts: 651
Received Thanks: 1,737
|
Hab mal eben das für den Sachverhalt unwichtige rausgeworfen..
PHP Code:
private JTextPane chatPane, inputPane;
private JScrollPane chatScrollPane;
....
private MessageReceiver receiver;
public ChatWindow(String username) {
...
chatPane = new JTextPane();
chatScrollPane = new JScrollPane(chatPane);
inputPane = new JTextPane();
receiver = new MessageReceiver(NETWORK_GROUP, NETWORK_GROUP_PORT, CLIENT_MULTICAST_PORT);
.....
// Das ganze Design gedöns.. / GUI erstellung
.....
Thread t = new Thread(receiver);
t.run();
}
PHP Code:
public class MessageReceiver implements Runnable {
private String NETWORK_GROUP;
private int NETWORK_GROUP_PORT, CLIENT_MULTICAST_PORT;
private MulticastSocket socket;
private InetAddress group;
public MessageReceiver(String NETWORK_GROUP, int NETWORK_GROUP_PORT, int CLIENT_MULTICAST_PORT) {
....
}
@Override
public void run() {
.....
while(true) {
try {
.....
Hier werden Nachrichten über den NetworkStream empfangen & verarbeitet.. Textnachrichten sollen dann in der Klasse oben - im GUI angezeigt werden...
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
|
|
|
08/25/2012, 19:49
|
#4
|
elite*gold: 144
Join Date: May 2007
Posts: 62,459
Received Thanks: 29,541
|
Du weißt also nicht wie du auf die GUI Elemete zugreifst ja ? Dann mach das GUI element was du ansprechen willst public static bzw. extra static methoden wodurch du aus anderen klassen auf die gui elemente zugreifen kannst.
PHP Code:
private static JTextPane chatPane, inputPane;
//bla code
public static void setInputPaneText(String txt) { inputPane.setText(txt); }
PHP Code:
@Override public void run() { ..... while(true) { try { GUIKlasse.setInputPaneText("der text der dahin soll"); } catch (IOException e) { e.printStackTrace(); } } }
So ist es aber nicht ganz Threadsicher, dafür gibts den Swingworker.
|
|
|
08/25/2012, 19:52
|
#5
|
elite*gold: 40
Join Date: Dec 2007
Posts: 651
Received Thanks: 1,737
|
Quote:
Originally Posted by Obilee
Du weißt also nicht wie du auf die GUI Elemete zugreifst ja ? Dann mach das GUI element was du ansprechen willst public static bzw. extra static methoden wodurch du aus anderen klassen auf die gui elemente zugreifen kannst.
PHP Code:
private static JTextPane chatPane, inputPane;
//bla code
public static void setInputPaneText(String txt) {
inputPane.setText(txt);
}
PHP Code:
@Override
public void run() {
.....
while(true) {
try {
GUIKlasse.setInputPaneText("der text der dahin soll");
} catch (IOException e) {
e.printStackTrace();
}
}
}
So ist es aber nicht ganz Threadsicher, dafür gibts den Swingworker.
|
Okayy.. danke.. aber mal rein interessenhalber..
Könnte man auch einfach das Objekt des ChatWindows als Parameter an den Thread mit übergeben & darüber dann den Text setzen? Ohne stataic voids, sondern mit normalen publics?
Wenn ja, wo liegen da vor & Nachteile bzw. warum macht man das (nicht) so? ^^
Bin noch ziemlicher Java Newbii.. aber ich sag mal, learning by doing & so..
|
|
|
08/26/2012, 09:34
|
#6
|
elite*gold: 144
Join Date: May 2007
Posts: 62,459
Received Thanks: 29,541
|
Es würd eher Sinn machen deine nicht GUI Klasse als private Klasse in der GUI Klasse zu deklarieren.
Dein Vorschlag würde auch gehen aber praktisch macht es niemand so. Vor- und Nach-teile kann ich dir jetzt auch nicht aufzählen bin nicht der Threading-experte.
|
|
|
08/26/2012, 12:19
|
#7
|
elite*gold: 0
Join Date: Jan 2012
Posts: 759
Received Thanks: 416
|
Quote:
|
Dein Vorschlag würde auch gehen aber praktisch macht es niemand so.
|
Wieso? Bei vielen Implementierungen des MVC-Patterns wird das View auch via DI dem Controller übergeben, und er macht im Grunde nichts anderes.
Wenn er seine Thread-Klasse in seine GUI-Klasse packt, ist beides fest miteinander verbunden. Wenn er der Thread-Klasse eine Instanz seiner GUI-Klasse übergibt, ist die GUI komplett austauschbar (sofern er noch ein entsprechendes Interface einführt).
Ich finde das toll, wobei ich, was Java / Threads / OOP angeht, auch kein Experte bin.
|
|
|
 |
Similar Threads
|
[B] .NET / Java Programmierung
05/03/2012 - elite*gold Trading - 10 Replies
.NET / Java Programmierung
Informationen zu mir:
Ich bin 17 Jahre alt und gehe auf eine Informatik HTL ( Höhere Technische Lehranstalt) in Wien. Vor etwa 4 Jahren habe ich mit dem Programmieren begonnen, damals mit Java, das ich bis vor einem Jahr auch noch mehr oder weniger aktiv programmiert habe. Seit etwa einem Jahr bin ich nun etwas mehr auf die .NET Platform gesprungen, wobei der Unterschied von Java zu C# bekanntlich nicht sehr groß ist.
|
.NET / Java Programmierung
04/26/2012 - Trading - 0 Replies
.NET / Java Programmierung
Informationen zu mir:
Ich bin 17 Jahre alt und gehe auf eine Informatik HTL ( Höhere Technische Lehranstalt) in Wien. Vor etwa 4 Jahren habe ich mit dem Programmieren begonnen, damals mit Java, das ich bis vor einem Jahr auch noch mehr oder weniger aktiv programmiert habe. Seit etwa einem Jahr bin ich nun etwas mehr auf die .NET Platform gesprungen, wobei der Unterschied von Java zu C# bekanntlich nicht sehr groß ist.
|
Suche hilfe bei Java Programmierung
02/09/2012 - Web Development - 4 Replies
Hallo epvp
Ich habe eine Frage an euch.
Die wäre mein Vater betreut eine Homepage vom THW-Jugend-Frankenberg.
Wir möchten dafür gerne eine uhr haben die auf unsern server gehostet wird (1&1).
Es gibt genug seiten aber wenn die down gehen ist ja auch die Uhr down ...
Deswegen suche ich einen Open source code der es Ermöglicht eine uhr zu haben die auf einer Homepage läuft wo in der Mitte das Bild vom THW-Jugend ist ;)
Wenn einer sowas machen würde/könnte wäre es super nett denn ich/er...
|
All times are GMT +1. The time now is 06:06.
|
|