JLable sichtbar/unsichtbar Toggeln


Padawan

Erfahrenes Mitglied
Hallo Leute,
ich war beim testen von java Oberflächen, um mich einzuarbeiten. Dazu sollte ein Button auf der Oberfläche vorhanden sein, mit dem ich ein sichtbares Label (im Code die variable lblX) "unsichtbar" machen und anschließend nach 2 sekunden wieder sichtbar machen. Den Code habe ich zwar soweit, der Label lässt sich jedoch nicht unsichtbar machen. Was ich auch bemerkt habe ist, dass die "abwahl" der Checkboxen erst nach der Verzögerung von 2 sekunden passiert, was eigl nicht der fall sein dürfte. Habe zwar gegoogelt aber nichts gefunden.
Im folgenden der Code:
Java:
    package Aufgaben;
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.EventQueue;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.ButtonGroup;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JRadioButton;
    import javax.swing.border.EmptyBorder;
    
    public class Aufgabe1 extends JFrame {
    
        private JPanel contentPane;
        private JPanel checkPanel;
        private JPanel pointPanel;
       
        private JRadioButton rdbtnJa;
        private JRadioButton rdbtnNein;
        private ButtonGroup btnGroup; 
        
        private JButton btnStart;
        private JLabel lblX;
       
        private String status;
        private String answer;
        private int diff;
        private int sec;
        private int count;
        /**
         * Launch the application.
         */
        public static void main(String[] args) {
            EventQueue.invokeLater(new Runnable() {
                public void run() {
                    try {
                        Aufgabe1 frame = new Aufgabe1();
                        frame.setVisible(true);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
        }
    
        /**
         * Create the frame.
         */
        public Aufgabe1() {setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setBounds(100, 100, 700, 300);
            contentPane = new JPanel();
            setContentPane(contentPane);
            contentPane.setLayout(null);
           
            btnStart = new JButton("Start");
            btnStart.setBounds(0, 0, 684, 23);
            contentPane.add(btnStart);
           
                checkPanel = new JPanel();
                checkPanel.setBounds(0, 229, 684, 33);
                contentPane.add(checkPanel);
        
                btnGroup = new ButtonGroup();
               
                rdbtnJa = new JRadioButton("Ja");
                checkPanel.add(rdbtnJa);
                btnGroup.add(rdbtnJa);
               
                rdbtnNein = new JRadioButton("Nein");
                checkPanel.add(rdbtnNein);
                btnGroup.add(rdbtnNein);
               
            pointPanel = new JPanel(new BorderLayout());
            pointPanel.setBackground(Color.BLACK);
            pointPanel.setBounds(0, 23, 684, 209);
            contentPane.add(pointPanel);
           
            lblX = new JLabel("X");
            lblX.setForeground(Color.WHITE);
            lblX.setVerticalAlignment(JLabel.CENTER);
            lblX.setHorizontalAlignment(JLabel.CENTER);
            pointPanel.add(lblX, BorderLayout.CENTER);
        
            run();
        }
        public void run() {
            System.out.println("----------");
            System.out.println("Method run()");
            btnStart.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    System.out.println("btn actionPerformed()");
                    createLightPoint();
                }
            });
        }
       
        private void createLightPoint() {
            System.out.println("----------");
            System.out.println("Method createLightPoint()");
            btnGroup.clearSelection();
            
            lblX.setVisible(false);
            checkPanel.setVisible(false);
            
            System.out.println("Bevor Sleep");
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("After Sleep");
            
            lblX.setVisible(true);
            checkPanel.setVisible(true);
        }
    
    }

Ich hoffe Ihr könnt mir weiter helfen.

Viele Grüße
Padawan
 
Zuletzt bearbeitet:

zerix

Hausmeister
Moderator
Hallo,

ohne es zu testen, würde ich vorschlagen, dass du mal versuchst das Panel, auf dem sich das Label befindet, mittels
Code:
<das_panel>.repaint()
neu zu zeichnen, wenn du das Label entfernt hast und wenn du es wieder sichtbar machst.

Viele Grüße
Sascha
 

zerix

Hausmeister
Moderator
Hi,

ich sehe gerade, dass du das ganze im direkt ActionListener ausführst. Pack das ganze mal in einen eignen Thread.

Viele Grüße
Sascha
 

Neue Beiträge