JLabel in die Mitte(JLabel.CENTER geht nicht)

Til7373

Mitglied
Hallo,
Ich habe ein Label das nachdem ein Button entfernt wurde in der Mitte des Frames stehen soll.
Alle Versuche das Label mit JLabel.Center in die Mitte zu bekommen funktioniert nicht.
Da die Größe des Frames nicht sehr groß sein soll,sieht man wenn ich das Programm jetzt starte,das Label nicht.

Java:
 spiel.addActionListener(new ActionListener(){
                    public void actionPerformed(ActionEvent e3){
                      frame4.remove(spiel);
                      frame4.repaint();
                      JLabel labels = new JLabel("Du hast eine "+ würfelzahl + " gewürfelt",JLabel.CENTER);
                      labels.setHorizontalAlignment( JLabel.CENTER);
                      labels.setFont(new Font("Verdana",Font.BOLD,25));
                      frame4.add(labels);
                     
                    }
                });
 
ja hab bei google gesucht
aber nur mit remove wurde der inhalt vom frame gar nicht entfernt und ich hab irgendwo gelesen das man repaint braucht und damit gings dann auch.
natürlich macht das eigentlich keinen sinn repaint aber dann brauch ich Hilfe bei dem löschen des inhalts
Java:
   JFrame frame4 = new JFrame();
                frame4.setSize(400,400);
                frame4.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame4.setLayout(new FlowLayout());
                Icon wuerfelbecher = new ImageIcon(getClass().getResource("Wuerfelbecher.png"));
                JButton spiel = new JButton(wuerfelbecher);
                spiel.setBackground(Color.white);
               
                int Würfelzahl =(int)(( Math.random()*6+1));
                String würfelzahl = String.valueOf(Würfelzahl);
               
               
                frame4.add(spiel);
                frame4.setVisible(true);
                frame4.setLocationRelativeTo(null);
               
                spiel.addActionListener(new ActionListener(){
                    public void actionPerformed(ActionEvent e3){
                      frame4.remove(spiel);
                      frame4.repaint();
                      JLabel labels = new JLabel("Du hast eine "+ würfelzahl + " gewürfelt",JLabel.CENTER);
                      labels.setHorizontalAlignment( JLabel.CENTER);
                      labels.setFont(new Font("Verdana",Font.BOLD,25));
                      frame4.add(labels);
                     
                    }
                });
 
nein der button hat zwar ein icon aber ich will im grunde wenn der button gedrückt wird,dass der button verschwindet und ein label angezeigt wird.
 
dann platziere deinen button auf ein panel und benutze
Code:
remove(button) & repaint()

aber wie kommst du dann wieder zu deinem Button oder ist das Spiel dann zu Ende?
 
ne es soll dann eigentlich mit Thread.sleep gewartet werden und dann wieder der das Programm von vorne also mit ner Schleife aber ich weiß noch nicht genau wie ich das umsetze.
 
ich habe jetzt ein Panel erstellt und auch dem frame hinzugefügt + den button dem panel hinzugefügt aber das Label wird trotzdem nicht in der Mitte angezeigt.

Java:
JFrame frame4 = new JFrame();
                frame4.setSize(400,400);
                frame4.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame4.setLayout(new FlowLayout());
                Icon wuerfelbecher = new ImageIcon(getClass().getResource("Wuerfelbecher.png"));
                JButton spiel = new JButton(wuerfelbecher);
                spiel.setBackground(Color.white);
               
                int Würfelzahl =(int)(( Math.random()*6+1));
                String würfelzahl = String.valueOf(Würfelzahl);
                JPanel panels = new JPanel();
                panels.add(spiel);
               
                frame4.add(panels);
                frame4.setVisible(true);
                frame4.setLocationRelativeTo(null);
               
                spiel.addActionListener(new ActionListener(){
                    public void actionPerformed(ActionEvent e3){
                       
                      panels.remove(spiel);
                      panels.repaint();
                      JLabel labels = new JLabel("Du hast eine "+ würfelzahl + " gewürfelt",JLabel.CENTER);
                      labels.setHorizontalAlignment( JLabel.CENTER);
                      labels.setFont(new Font("Verdana",Font.BOLD,25));
                      frame4.add(labels);
                     
                    }
                });
 
wo addest du dein label??
nicht auf dem panel du addest es auf deinem frame

Java:
panels.add(labels);

und danach ein repaint, dann sollte es funken
 
ok hab ich gemacht,aber jetzt wird gar kein Label mehr angezeigt(nicht mal wenn ich frame4 groß mache.)
Java:
panels.remove(spiel);
                      panels.repaint();
                      JLabel labels = new JLabel("Du hast eine "+ würfelzahl + " gewürfelt",JLabel.CENTER);
                      labels.setHorizontalAlignment( JLabel.CENTER);
                      labels.setFont(new Font("Verdana",Font.BOLD,25));
                      panels.add(labels);
 
hier sieht man den Frame bevor geklickt,dann geklickt und dann im Vollbildmodus wenn geklickt wurde.
 

Anhänge

  • DSC_0006.JPG
    DSC_0006.JPG
    1,5 MB · Aufrufe: 32
  • DSC_0007.JPG
    DSC_0007.JPG
    965,2 KB · Aufrufe: 32
  • DSC_0008.JPG
    DSC_0008.JPG
    1,1 MB · Aufrufe: 31
hab ich vorher nicht gesehen....du erzeugst das Label erst in der actionPerformed..
das label vorher erzeugen und adden

Java:
label = new JLabel("");
panel.add(label);
und in der actionPerformed übergibst du dann den text und removest den Button

Java:
// actionPerformed-Methode..
panel.remove(button);
label.setText("TEXT");
// repaint...
 

Zurück
Oben