Avatar billede dennism Nybegynder
25. november 2006 - 13:34 Der er 9 kommentarer og
1 løsning

Java: panels

Jeg har lavet denne lille eksempelkode, som er et udpluk fra et program:

import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;
import java.awt.event.*;

public class Client {
   
    private Color bgColor = new Color(250,250,250);
    private JPanel panel;
   
    public Client() {
        JFrame frame = new JFrame("Test");
       
        panel = new JPanel(new FlowLayout(FlowLayout.LEFT));
        frame.add(panel, BorderLayout.CENTER);
       
        JPanel bottomPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
        frame.add(bottomPanel, BorderLayout.SOUTH);
       
        JButton randomButton = new JButton("Random");
        bottomPanel.add(randomButton);
        randomButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                updateGame();
            }
        });
       
        updateGame();
       
        frame.pack();
        frame.setVisible(true);
    }
   
    private void updateGame() {
        JPanel boxPanel = new JPanel();
        boxPanel.setLayout(new BoxLayout(boxPanel,BoxLayout.Y_AXIS));
        JLabel gameTitleLabel = new JLabel(""+Math.random());
        boxPanel.add(gameTitleLabel);

        panel.removeAll();
        panel.add(boxPanel);
    }
   
    public static void main(String[] args) {
        Client client = new Client();
    }
   
}

Mit problem er, at når jeg trykker random, så bliver forandringen ikke vist, før end jeg f.eks. resizer vinduet i runtime.
Nogen der kan fortælle mig, hvorfor?

I behøver ikke undrer jer over, hvorfor jeg konstant tilføjer/fjerner et panel, istedet for bare at opdatere teksten hver gang - det er der en naturlig grund til, men det kan ikke ses ud af dette eksempel.
Avatar billede winners79 Nybegynder
25. november 2006 - 13:48 #1
panel.removeAll();
panel.add(boxPanel);
panel.updateUI();
Avatar billede dennism Nybegynder
25. november 2006 - 14:01 #2
Tak :)

Et andet problem:
timeLabel.setText(cal.get(Calendar.HOUR_OF_DAY ) + ":" + cal.get(Calendar.MINUTE));
Kan finde på f.eks. at returnere 14:8 isetdet for 14:08. Er der en nem måde at løse det på?
Avatar billede winners79 Nybegynder
25. november 2006 - 14:26 #3
uden at undersøge det nærmere... hvis man tager udgangspunkt i det andet eksempel så:

    private ActionListener urPerformer = new ActionListener() {
        public void actionPerformed(ActionEvent evt) {
            Calendar cal = Calendar.getInstance();
            int seconds = cal.getInstance().get(Calendar.SECOND);
            String secondsString = "";
            if (seconds < 10)
                secondsString = "0";
            secondsString+= seconds;
            System.out.println(cal.getInstance().get(Calendar.HOUR_OF_DAY ) + ":" + cal.getInstance().get(Calendar.MINUTE) + ":" + secondsString );
        }
    };
Avatar billede arne_v Ekspert
25. november 2006 - 14:45 #4
en (Simple)DateFormat format på en Date var nok noget pænere
Avatar billede dennism Nybegynder
25. november 2006 - 15:11 #5
arne_v >>

Hvordan klarer man det?
Avatar billede winners79 Nybegynder
25. november 2006 - 15:24 #6
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
            System.out.println(sdf.format(Calendar.getInstance().getTime()));
Avatar billede dennism Nybegynder
25. november 2006 - 15:31 #7
Tak, smider du lige et svar her?
Avatar billede dennism Nybegynder
25. november 2006 - 15:40 #8
Arne_V  >>

Har du et bud på dette problem:
http://forum.java.sun.com/thread.jspa?threadID=789248
Avatar billede dennism Nybegynder
26. november 2006 - 18:20 #9
Winners79, må jeg bede om et svar?
Avatar billede winners79 Nybegynder
26. november 2006 - 19:06 #10
:)
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