Vinnaren i pepparkakshustävlingen!
2008-02-12, 15:04
  #1
Medlem
Tjena.
Varför jag inte kan skapa ett nytt objekt efter timern?

OM jag skapar ett objekt (ny internalframe) efter timern, hoppar programmet över timern och den nya internal frame överlappar den gamla bara efter en sekunds fördröjning.


vore grymt snällt om nån kunde svara på det. Ber också om ursäkt för min kod. Den ser ut som fan. även för en nybörjare:P


Om ni ser något stort misstag i koden får ni gärna peka på det:P

KOD:

Mvh
Citera
2008-02-12, 15:41
  #2
Medlem
Tooners avatar
Hmm, timern i Swing-biblioteket är väl till för att göra något med jämna mellanrum.

Det du gör här:

Kod:
javax.swing.Timer timer = new javax.swing.Timer(8000, new ActionListener() {
    public 
void actionPerformed(ActionEvent e){
        
words.dispose();
    }
});
timer.start(); 

Är ju att sätta igång en timer som var åttonde sekund tar bort din JInternalFrame words.

Den väntar alltså inte som du kanske försökte få den att göra. Utan det du gör direkt efter timer.start() kommer att utföras direkt, och efter åtta sekunder försvinner 'words'. Om du efter det visar 'words' igen kommer den återigen efter åtta sekunder tas bort av din timer.

Att få det att fungera som du vill (som jag tror att du vill iallafall) skulle kanske vara Thread.sleep(8000) istället. Då väntar hela programmet i åtta sekunder innan det fortsätter. (är ju inte den optimala lösningen direkt, bättre att skapa en egen tråd som hanterar det)
Citera
2008-02-12, 15:45
  #3
Medlem
Tooners avatar
Vad jag menar var väl ungefär det här:

Kod:
// 'words' är skapad och visas och nu väntar programmet i åtta sekunder
try {
    
Thread.sleep(8000);
} catch (
InterruptedException e) {
    
e.printStackTrace();
}
// Programmet har väntat klart och tar bort 'words'
words.dispose();
        
// Fortsätt med det du tänkt 
Inte så smidig lösning direkt, men du förstår kanske poängen.
Citera
2008-02-16, 10:09
  #4
Medlem
Tack Fungerade fint fint.. har ett annat litet problem om du har lust att kolla på vad jag har gjort för fel på följande kod:

Kod:
JInternalFrame frame3 = new JInternalFrame('moment2');
       
frame3.setLayout(new BorderLayout());
        
frame3.setSize(1275,770);
       
frame3.setVisibletrue );
     
JLabel instruction= new JLabel();
     
instruction.setText('                                  Vad gör mannen på bilden?             ');
     
instruction.setFont(new Font('SansSerif',Font.BOLD,40));
     
instruction.setVerticalAlignment(JLabel.CENTER);

     
ImageIcon picture=new ImageIcon('king.jpg');
     
JLabel picholder= new JLabel(picture);
     
picholder.setSize(300,400);
     
picholder.setLocation(100,200);

     
JButton choice1= new JButton('HAN HÅLLER ETT TAL');
     
choice1.setSize(new java.awt.Dimension(50,50));
     
JButton choice2= new JButton('HAN PEKAR PÅ NÅGOT');
     
choice2.setSize(new java.awt.Dimension(50,50));
     
JButton choice3=new JButton('HAN STRÄCKER SIG EFTER NÅGOT');
     
choice3.setSize(new java.awt.Dimension(100,100));
     
JPanel buttons;
     
buttons= new JPanel();
     
buttons.setPreferredSize(new Dimension(200,300));
     
buttons.add(choice1);
     
buttons.add(choice2);
     
buttons.add(choice3);
     
frame3.add(buttons,'South');
     
frame3.add(picholderBorderLayout.CENTER);
 
     
frame3.getContentPane().add(instructionBorderLayout.PAGE_START);
       
frame.add(frame3);

     
//public class shutdown implements ActionListener {
        
     //        choice1.addActionListener(this);
        // }
        // public void actionPerformed(ActionEvent e) {
        //     frame3.dispose();
        // }
     //}
 
 
 
 
 
 
}


Mvh
Citera
2008-02-16, 13:20
  #5
Medlem
Tooners avatar
Ja det först jag ser är att du har använt enkla citationstecken överallt... alltså ' istället för " .

Så den där koden kommer nog inte fungera så bra.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback