05. december 2002 - 21:45Der er
9 kommentarer og 1 løsning
Hvorfor virker samme kode ikke
Jeg har prøvet at kalde en metode to steder, men den virker kun som del af constructoren : public topFrame() ikke som event fra knap: jButton1ActionPerformed(java.awt.event.ActionEvent evt)
Hvorfor?
Her er koden
/* * topFrame.java * * Created on 4. december 2002, 18:54 */
public class topFrame extends javax.swing.JFrame {
/** Creates new form topFrame */ public topFrame() { initComponents (); pack (); this.setSize(300,300); // Her er første kald - det virker // knappen kan ses doit(25, "1"); }
private void doit(int y, String titel) { Box b = Box.createHorizontalBox(); JButton btn; b.add(btn = new JButton("titel")); getContentPane().add(b); b.setBounds(25,y,100,20); }
/** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the FormEditor. */ private void initComponents() { jButton1 = new javax.swing.JButton(); getContentPane().setLayout(null); addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { exitForm(evt); } } );
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // Add your handling code here: // det virker ikke - knappen kommer ikke frem! doit(55, "2"); }
magoo>> 1 Jeg behøver vel ikke beskytte mod andre events. Jeg trykker jo på knappen for at udføre doit anden gang. Men når jeg gør det sker der tilsyneladende ikke noget. Det er det jeg ikke fatter.
magoo>> 2 Jeg ved godt det med import, men jeg bruger SUN-ONE og den skriver selv koden til knappen osv. Den eneste kode jeg har tilføjet er doit og de to kald, ét i constructoren og ét i knap-event-handleren.
magoo>> 3 Ja, den tegner næsten det samme, men kaldet er ikke helt det samme. Positionen og teksten er ændret. Pointen er jo netop at det er det samme jeg gør begge gange, men at det ikke virker begge steder.
Hvis du gør som jeg skrev (evt. med en debug-linje) ser du, at metoden bliver kaldt begge gange. Jeg ved også godt at den ikke tegner det samme pga. de parametre, der sendes med ind, men hvorfor det ikke reflekteres på skærmen ved jeg ikke??
Ja, metoden bliver kaldt begge gange, det gør min også. Jeg har prøvet at have et breakpoint i event-handleren. Det går skam heller ikke ned, der sker bare ikke noget på skærmen :( Jeg er godt nok ikke verdensmester i SUN's debugger. Jeg forstår f.eks. ikke hvorfor den hele tiden spørger hvad den skal gøre fordi der ikke er nogen source. Den spørger om den skal "Step Out" eller "Stop" eller "Find Source". Jeg plejer at bruge step out, men så går det galt når koden er færdig (event handleren). Så øhhh, men det er nok en anden historie. :)
Jeg skal lave et spil. Jeg ønsker dynamisk at tilføje rækker af komponenter fem knapper og et par tekstfelter i hver række. Når man trykker på knapperne i rækken kommer der et valg, og knappen viser valget (farve). Når alle fem knapper er sat (valgt), skal rækken evalueres. Svaret kommer i de to tekstbokse. Hvis svaret er forkert, skal der genereres en ny række. Hvis der ikke er plads til rækkerne skal der tilføjes scrollbars, så man kan spole op og ned i sine afgivne svar. Jeg forsøgte så at bruge et råd (se spørsmål Scrollbars i JScrollPane), men opdagede at det kun virkede i constructoren. Så prøvede jeg at genskabe problemet i den enkleste form, som ovenfor beskrevet.
Du skal foreløbig have tak, Magoo. Jeg må i seng. Jeg kigger efter flere svar i morgen, godnat.
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.