|
| 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
| |
|
|