Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding
You last visited: Today at 06:05

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



NeedHelp -Java Programmierung

Discussion on NeedHelp -Java Programmierung within the General Coding forum part of the Coders Den category.

Reply
 
Old   #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.
Ap0kalyps3 is offline  
Old 08/25/2012, 19:07   #2

 
Obilee's Avatar
 
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
Obilee is offline  
Old 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 chatPaneinputPane;
    private 
JScrollPane chatScrollPane;
....
    private 
MessageReceiver receiver;

public 
ChatWindow(String username) {
        ...
        
chatPane = new JTextPane();
        
chatScrollPane = new JScrollPane(chatPane);
        
inputPane = new JTextPane();
        
        
receiver = new MessageReceiver(NETWORK_GROUPNETWORK_GROUP_PORTCLIENT_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_PORTCLIENT_MULTICAST_PORT;
    
    private 
MulticastSocket socket;
    private 
InetAddress group;
    
    public 
MessageReceiver(String NETWORK_GROUPint NETWORK_GROUP_PORTint 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();
            }
        }
    }
    

Ap0kalyps3 is offline  
Old 08/25/2012, 19:49   #4

 
Obilee's Avatar
 
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 chatPaneinputPane;

//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.
Obilee is offline  
Old 08/25/2012, 19:52   #5
 
elite*gold: 40
Join Date: Dec 2007
Posts: 651
Received Thanks: 1,737
Quote:
Originally Posted by Obilee View Post
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 chatPaneinputPane;

//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..
Ap0kalyps3 is offline  
Old 08/26/2012, 09:34   #6

 
Obilee's Avatar
 
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.
Obilee is offline  
Old 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.
dowhile is offline  
Reply


Similar Threads 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.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.