/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Opdatering af JPanel
Fra : Mette Dencker


Dato : 30-04-03 09:27

Er der nogen der ved, hvordan man opdaterer en værdi på et Jpanel, når
værdien bliver beregnet et andet sted i programmet - dvs. i en anden klasse?
Jeg har et helt projekt i JCreator, hvor mit Jpanel er oprettet i én klasse,
og en anden klasse foretager nogle beregninger, hvor resultatet med
mellemrum skal opdateres på panelet...

Mvh. Mette



 
 
Søren Berg Glasius (30-04-2003)
Kommentar
Fra : Søren Berg Glasius


Dato : 30-04-03 09:49

> Er der nogen der ved, hvordan man opdaterer en værdi på et Jpanel, når
> værdien bliver beregnet et andet sted i programmet - dvs. i en anden
klasse?
> Jeg har et helt projekt i JCreator, hvor mit Jpanel er oprettet i én
klasse,
> og en anden klasse foretager nogle beregninger, hvor resultatet med
> mellemrum skal opdateres på panelet...

Hej Mette

Benyt et observer pattern.

Lad klassen som laver beregninger benytte PropertyChangeSupport f.eks:

public class Calculator {

/** Holds value of property value. */
private int value;

/** Utility field used by bound properties. */
private java.beans.PropertyChangeSupport propertyChangeSupport = new
java.beans.PropertyChangeSupport(this);

/** Adds a PropertyChangeListener to the listener list.
* @param l The listener to add.
*
*/
public void addPropertyChangeListener(java.beans.PropertyChangeListener
l) {
propertyChangeSupport.addPropertyChangeListener(l);
}

/** Removes a PropertyChangeListener from the listener list.
* @param l The listener to remove.
*
*/
public void
removePropertyChangeListener(java.beans.PropertyChangeListener l) {
propertyChangeSupport.removePropertyChangeListener(l);
}

/** Getter for property value.
* @return Value of property value.
*
*/
public int getValue() {
return this.value;
}

/** Setter for property value.
* @param value New value of property value.
*
*/
public void setValue(int value) {
int oldValue = this.value;
this.value = value;
propertyChangeSupport.firePropertyChange("value", new
Integer(oldValue), new Integer(value));
}

}

og lad dit GUI registrere sig som property change listener :

public class CalcGUI extends javax.swing.JFrame implements
PropertyChangeListener{

/** Creates new form CalcGUI */
public CalcGUI() {
initComponents();
Calculator calc = new Calculator();
calc.addPropertyChangeListener(this);
}

public void propertyChange(PropertyChangeEvent evt) {
if(evt.getPropertyName().equals("value")) {
jValueField.setText(evt.getNewValue().toString());
}
}

/** metoder til initialisering af gui er fjernet **/
}

Håber det giver en ide om, hvordan det kan laves.

/Søren Berg Glasius



Mette Dencker (30-04-2003)
Kommentar
Fra : Mette Dencker


Dato : 30-04-03 10:32

Den nemme løsning, som jeg fandt på api'en var at kalde metoden updateUI()
på mit JLabel-objekt... Det duer - men måske er det ikke så kønt!
/Mette

Søren Berg Glasius <spamfree@privat-post.dk> skrev i en
nyhedsmeddelelse:b8o2lr$1dr0$1@news.cybercity.dk...
> > Er der nogen der ved, hvordan man opdaterer en værdi på et Jpanel, når
> > værdien bliver beregnet et andet sted i programmet - dvs. i en anden
> klasse?
> > Jeg har et helt projekt i JCreator, hvor mit Jpanel er oprettet i én
> klasse,
> > og en anden klasse foretager nogle beregninger, hvor resultatet med
> > mellemrum skal opdateres på panelet...
>
> Hej Mette
>
> Benyt et observer pattern.
>
> Lad klassen som laver beregninger benytte PropertyChangeSupport f.eks:
>
> public class Calculator {
>
> /** Holds value of property value. */
> private int value;
>
> /** Utility field used by bound properties. */
> private java.beans.PropertyChangeSupport propertyChangeSupport = new
> java.beans.PropertyChangeSupport(this);
>
> /** Adds a PropertyChangeListener to the listener list.
> * @param l The listener to add.
> *
> */
> public void
addPropertyChangeListener(java.beans.PropertyChangeListener
> l) {
> propertyChangeSupport.addPropertyChangeListener(l);
> }
>
> /** Removes a PropertyChangeListener from the listener list.
> * @param l The listener to remove.
> *
> */
> public void
> removePropertyChangeListener(java.beans.PropertyChangeListener l) {
> propertyChangeSupport.removePropertyChangeListener(l);
> }
>
> /** Getter for property value.
> * @return Value of property value.
> *
> */
> public int getValue() {
> return this.value;
> }
>
> /** Setter for property value.
> * @param value New value of property value.
> *
> */
> public void setValue(int value) {
> int oldValue = this.value;
> this.value = value;
> propertyChangeSupport.firePropertyChange("value", new
> Integer(oldValue), new Integer(value));
> }
>
> }
>
> og lad dit GUI registrere sig som property change listener :
>
> public class CalcGUI extends javax.swing.JFrame implements
> PropertyChangeListener{
>
> /** Creates new form CalcGUI */
> public CalcGUI() {
> initComponents();
> Calculator calc = new Calculator();
> calc.addPropertyChangeListener(this);
> }
>
> public void propertyChange(PropertyChangeEvent evt) {
> if(evt.getPropertyName().equals("value")) {
> jValueField.setText(evt.getNewValue().toString());
> }
> }
>
> /** metoder til initialisering af gui er fjernet **/
> }
>
> Håber det giver en ide om, hvordan det kan laves.
>
> /Søren Berg Glasius
>
>



Søg
Reklame
Statistik
Spørgsmål : 177491
Tips : 31966
Nyheder : 719565
Indlæg : 6408455
Brugere : 218886

Månedens bedste
Årets bedste
Sidste års bedste