/ 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
mærkeligt prob. opdatering af jPanel
Fra : Anders Lund


Dato : 24-02-05 03:57

Jeg er ved at lave et program, hvor man bla. kan ændre indholdet i et jPanel
ved at trykke på forskellige knapper.

Jeg har følgende kode:

buttonb.addActionListener(new ActionListener() {
public void actionPerformed( ActionEvent e ){
PanelCenter.removeAll();

//buttonc.setText("SCREEN B");

JLabel jLabel1 = new JLabel();
jLabel1.setFont(new java.awt.Font("Dialog", 0, 25));
jLabel1.setText("SCREEN A");
PanelCenter.add(jLabel1);

PanelCenter.repaint();
}
} );

Det virker ikke. Panelet bliver renset (removeAll) og gen-tegnet (repaint)
men det nye label bliver ikke sat på.
Hvis jeg så indsætter linien:
buttonc.setText("SCREEN B");
virker det!
Linien har intet med jPanelet at gøre. Den ændre teksten på en helt
urelateret knap. Men det er åbenbart nok til at det virker, og labelen
bliver sat på panelet.
Forstår det virkeligt ikke. (kan have noget at gøre med at klokken er 04:00
hehe)
Er der nogen der kan hjælpe?

Mvh
Anders Lund



 
 
Mikael Flensborg (24-02-2005)
Kommentar
Fra : Mikael Flensborg


Dato : 24-02-05 07:50

Anders Lund wrote:
> Jeg er ved at lave et program, hvor man bla. kan ændre indholdet i et jPanel
> ved at trykke på forskellige knapper.
>
> Jeg har følgende kode:
>
> buttonb.addActionListener(new ActionListener() {
> public void actionPerformed( ActionEvent e ){
> PanelCenter.removeAll();
>
> //buttonc.setText("SCREEN B");
>
> JLabel jLabel1 = new JLabel();
> jLabel1.setFont(new java.awt.Font("Dialog", 0, 25));
> jLabel1.setText("SCREEN A");
> PanelCenter.add(jLabel1);
>
> PanelCenter.repaint();
> }
> } );
>
> Det virker ikke. Panelet bliver renset (removeAll) og gen-tegnet (repaint)
> men det nye label bliver ikke sat på.
> Hvis jeg så indsætter linien:
> buttonc.setText("SCREEN B");
> virker det!
> Linien har intet med jPanelet at gøre. Den ændre teksten på en helt
> urelateret knap. Men det er åbenbart nok til at det virker, og labelen
> bliver sat på panelet.
> Forstår det virkeligt ikke. (kan have noget at gøre med at klokken er 04:00
> hehe)
> Er der nogen der kan hjælpe?
>
> Mvh
> Anders Lund
>
>
Prøv at fyr en "revalidate" på dit panel

/Mikael

Filip Larsen (24-02-2005)
Kommentar
Fra : Filip Larsen


Dato : 24-02-05 10:53

Anders Lund skrev

> Jeg er ved at lave et program, hvor man bla. kan ændre indholdet i et
jPanel
> ved at trykke på forskellige knapper.
>
> Jeg har følgende kode:
>
> buttonb.addActionListener(new ActionListener() {
> public void actionPerformed( ActionEvent e ){
> PanelCenter.removeAll();
>
> //buttonc.setText("SCREEN B");
>
> JLabel jLabel1 = new JLabel();
> jLabel1.setFont(new java.awt.Font("Dialog", 0, 25));
> jLabel1.setText("SCREEN A");
> PanelCenter.add(jLabel1);
>
> PanelCenter.repaint();
> }
> } );
>
> Det virker ikke. Panelet bliver renset (removeAll) og gen-tegnet
(repaint)
> men det nye label bliver ikke sat på.

Som Mikael har sagt, så mangler der en revalidate. En anden måde at få
den udført på, er at vente med at sætte teksten på din jLabel1 til efter
den er tilføjet til panelet, dvs. flyt PanelCenter.add() op lige efter
du har lavet jLabel1. Du kan i øvrigt fjerne kaldet til repaint.


Mvh,
--
Filip Larsen



Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409079
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste