Avatar billede zitzo Nybegynder
10. juni 2005 - 08:41 Der er 9 kommentarer og
1 løsning

Swing forsvinder

Jeg er blevet nødsaget til at bruge swing komponenter i min applikation da jeg skal bruge comboboxe og radioknapper som jeg ikke umiddelbart kan finde i AWT pakken. De nye komponenter er også mægtig pæne men jeg syndes de er meget ustabile.

Hvis man tabber ud af programmet og et andet vindue overlapper min applikation så forsvinder alle swing komponenterne og kommer først igen når man kører musen hen over dem.

Jeg kan forstå via en masse googling at de skal tegnes op igen i ny og næ ved hjælp af repaint(); mit problem er bare at jeg ikke ved hvordan jeg skal få den til at registrerer når programmet "aktivt" igen og derfor lige skal gentegne komponenterne.

Jeg har skiftet alle komponenterne ud, så det hele er swing. Jeg havde nemlig nogen probs med AWT og Swing i samme container... they don't mix :)

Jeg laver en container i constructoren af getContentPane fra en extended JFrame, hvor jeg smider alle komponenterne i.

Er der nogen der har en fix vej rundt om dette problem?
Avatar billede arne_v Ekspert
10. juni 2005 - 08:50 #1
prøv og post noget kode

sådan opfører swing sig normalt ikke
Avatar billede zitzo Nybegynder
10. juni 2005 - 09:00 #2
public class mainWindow extends JFrame{
    Container c = new Container();
        JRadioButton rbFoil        = new JRadioButton("Foil");
    JRadioButton rbBook        = new JRadioButton("Book");
        JRadioButton rbCustom    = new JRadioButton("Custom");
        ButtonGroup formatGroup    = new ButtonGroup();
   
    JButton Bquery             = new JButton("Find job");
    JButton BsqlUpdate         = new JButton("Opdater DB");
    JTextField tfFileName     = new JTextField();
    JTextArea taFileResult     = new JTextArea();
    JLabel lblFileName         = new JLabel("Filnavn:");
    JLabel lblFormat         = new JLabel("Format:");

  public void paint(Graphics g){
        lblFileName.setBounds(    new Rectangle(10,10,50,18));
        tfFileName.setBounds(    new Rectangle(60,10,100,18));
    Bquery.setBounds(        new Rectangle(170,10,80,18));
    BsqlUpdate.setBounds(    new Rectangle(380,420,100,18));
    taFileResult.setBounds(    new Rectangle(10,40,250,400));
    lblFormat.setBounds(    new Rectangle(270,40,60,18));
    rbFoil.setBounds(        new Rectangle(270,60,60,18));
    rbBook.setBounds(        new Rectangle(270,80,60,18));
    rbCustom.setBounds(        new Rectangle(270,100,80,18));
    }

  mainWindow(){
    c = getContentPane();
    c.add(Bquery);
    c.add(BsqlUpdate);
    c.add(lblFileName);
    c.add(tfFileName);
    c.add(taFileResult);
   
    c.add(lblFormat);
    c.add(rbFoil);
    c.add(rbBook);
    c.add(rbCustom);
       
    c.add(taFileResult);
    //c.add(TAsqlReading);
    taFileResult.setEditable(false);
    BsqlUpdate.setEnabled(false);
       
    formatGroup.add(rbFoil);
    formatGroup.add(rbBook);
    formatGroup.add(rbCustom);
       
    rbFoil.setSelected(true);        setTitle("FileParser | v"+version);
   
        setSize(500,485);
    setResizable(false);
    show();
}
  public static void main(String args[]){
    new mainWindow();
  }
}

Dette er et udsklip, men alt det basale skulle gerne være beskrevet
Avatar billede zitzo Nybegynder
10. juni 2005 - 09:05 #3
jeg har så forsøgt mig med forskellige ting i repaint(); men der er ikke rigtig noget der ser ud til at gøre en forskel.

fx:
public void update(Graphics g){
    c.repaint();
}
Avatar billede zitzo Nybegynder
10. juni 2005 - 09:05 #4
hov det var så update() jeg mente :)
Avatar billede arne_v Ekspert
10. juni 2005 - 09:13 #5
prøv lige at kald super klassens paint i din paint !
Avatar billede arne_v Ekspert
10. juni 2005 - 09:13 #6
super.paint(g);
Avatar billede zitzo Nybegynder
10. juni 2005 - 09:15 #7
Arne... du er smuk :P
Avatar billede zitzo Nybegynder
10. juni 2005 - 09:16 #8
kommer du med et svar :D
Avatar billede zitzo Nybegynder
10. juni 2005 - 09:42 #9
Arne det var lige det der skulle til :)... skal du ikke have dine 60 bananer?
Avatar billede arne_v Ekspert
10. juni 2005 - 09:56 #10
svar kommer her
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester