2012-10-12 17 views
5

Ho una domanda generale correlata a Java.Come aggiornare una GUI in Java?

Sto scrivendo un'applicazione con un menu GUI. Sto cercando di cambiare una parte del menu GUI in base alla selezione di un pulsante di opzione.

Devo:

  1. ridisegnare l'intera finestra o solo aggiornamento che parte con:

    setVisible(true)? 
    
  2. Se mi basta usare la dichiarazione da # 1 sopra .. l'interfaccia grafica è bene - fino a quando non muovo il mouse su di esso e poi vedo la scelta del pulsante precedente. Che cosa sto facendo di sbagliato?

+0

Penso che ci sia un metodo paint() – amphibient

+0

repaint() è probabilmente quello che wnat – jozefg

+0

ho provato solo il metodo repaint() e non ha funzionato affatto. Ho provato setVisible (true) insieme a quello e non ha funzionato neanche. – ironmantis7x

risposta

6

I componenti di rotazione hanno un metodo repaint(), revalidate() e doLayout(). Uno di questi dovrebbe probabilmente essere in grado di ridisegnare qualsiasi pezzo tu voglia. Tuttavia, doLayout non è qualcosa per cui dovresti assumerti la responsabilità, questa è la responsabilità dei motori di layout.

Si potrebbe anche voler controllare this post, la prima risposta ha una spiegazione abbastanza buona, e collegamenti ad un articolo con maggiori dettagli.

In termini di seconda parte della domanda, non ne sono sicuro, ma potremmo aver bisogno di vedere del codice per avere un'idea. La "zona sostituita" viene effettivamente rimossa dalla vista?

+1

cosa devo importare per usare repaint() o doLayout()? – ironmantis7x

+0

Non è necessario importare nulla in più, questi dovrebbero essere i metodi sui componenti Swing che si stanno utilizzando - consultare i documenti http://docs.oracle.com/javase/6/docs/api/java/awt/Component .html. Qualsiasi sottoclasse di Component dovrebbe avere quei metodi disponibili. – shortstuffsushi

+0

Evita di chiamare direttamente doLayout, se ti trovi in ​​una posizione in cui questa è l'unica cosa che funziona, hai sbagliato una cosa. doLayout dovrebbe avere più effetto sul tuo attuale contenitore. Invece, usa invalido invece – MadProgrammer

0

Chiama il revalidate() sul componente di livello superiore.

+0

Sono nuovo di Java quindi per favore sii paziente con me .... esattamente come chiamo revalidate() sul componente di primo livello? ogni volta che provo a inserirlo dopo un repaint(), viene visualizzato un errore del compilatore. – ironmantis7x

4

.. Nella mia applicazione l'utente seleziona quale tipo di piattaforma dispositivo desidera test superiore (quella scelta è un insieme di due pulsanti di opzione sulla sinistra). Quando l'utente seleziona Android o iOS, il raggruppamento centrale delle caselle di controllo cambia per riflettere un gruppo di dispositivi Android che possono testare o un gruppo di dispositivi iOS che possono testare.

  1. mettere un pannello nella 'raggruppamento centrale'.
  2. Utilizzare un CardLayout per il pannello.
  3. Aggiungi entrambi i comandi iOS & Android al pannello con il layout della scheda.
  4. Capovolgi tra loro se necessario.