JCheckBoxMenuItem

Status
Nicht offen für weitere Antworten.

HTML

Bekanntes Mitglied
Hi, ich habe einen Menüeintrag mit Kontrollkästchen. Jetzt würde ich gerne erreichen, dass ein Fenster eingeblendet wird, falls das Häkchen gestzt ist und das Fenster wieder ausgeblendet wird sobald das Häkchen entfernt wird.

Mein Code:

Code:
if(menuView.isSelected() == true)
        {
               frame.setVisible(true);
        }
        else
        {
        	   frame.setVisible(false);
        }

Jetzt wird das Fenster eingeblendet, sobald ich das Häkchen setze, aber wenn ich das Häkchen wieder entferne bleibt das Fenster sichtbar.

Also was mache ich da falsch?
danke schon mal im Voraus
 

foobar

Top Contributor
Dein Code sieht doch korrekt aus. Ich würde das nur etwas verkürzen:

Code:
chkShow = new JCheckBoxMenuItem("Show");
chkShow.addActionListener(new ActionListener()
{
   public void actionPerformed(ActionEvent e)
  {
     frame.setVisible(chkShow.isSelected());
  }
}
 

HTML

Bekanntes Mitglied
okay, aber das problem bleibt gleich,

er öffnet das Fenster, aber schließt es nicht mehr bzw. macht es sichtbar aber nicht mehr unsichtbar.
 

SamHotte

Top Contributor
Wird die Action denn überhaupt ausgelöst beim abwählen?

edit: falsche Vokabel ('disablen') korrigiert
 

SamHotte

Top Contributor
Wenn du Eclipse benutzt: in die linke Scrollbar klicken oder "Run->Toggle Line Breakpoint" wählen.
Wenn du 'nen normalen Editor benutzt: einfach mal ein "System.out.println(menuView.isSelected());" in deine actionPerformed einbauen und schauen, ob das überhaupt ausgegeben wird.
 

HTML

Bekanntes Mitglied
also wenn ich des mach gibt mir die Konsole entweder true oder false aus (System.out.println) --> also funktionierts ja eigentlich.

Ich versteh bloß nicht, wieso es nicht geht. ich hab es jetzt so gemacht wie foobar, aber auch wenn er in der Konsole false ausgibt wird das Fenster immer noch angezeigt.

woran kann denn des noch liegen??

danke schon mal
 

HTML

Bekanntes Mitglied
Okay, also

Code:
class HauptFrame extends JFrame
    {
  public HauptFrame()
    {
   final JCheckBoxMenuItem testmenu = new JCheckBoxMenuItem("test");

    testmenu.addActionListener(new
         ActionListener()
         {
            public void actionPerformed(ActionEvent event)
            {  	
                    VorschauFrame vorframe = new VorschauFrame();
	            vorframe.setVisible(menuViewvors.isSelected());
            }
         });  }
  }

das ist die Klasse die das ganze verwirklichen soll aber eben das obige Problem hat.

edit: hab den code nochmal geändert, problem bleibt aber
 

HTML

Bekanntes Mitglied
Jetzt gibt es noch eine Klasse die das VorschauFrame weiter ausführt, die hat doch nichts mehr mit dem Öffnen bzw. schließen des Fensters zu tun, oder?
 

foobar

Top Contributor
Du erstellst bei jedem Klick einen Neuen VorschauFrame, das kann ja nicht funktionieren.

Code:
class HauptFrame extends JFrame
    {
  private                     VorschauFrame vorframe;
  public HauptFrame()
    {
   vorframe = new VorschauFrame();     
final JCheckBoxMenuItem testmenu = new JCheckBoxMenuItem("test");

    testmenu.addActionListener(new
         ActionListener()
         {
            public void actionPerformed(ActionEvent event)
            {     
               vorframe.setVisible(menuViewvors.isSelected());
            }
         });  }
  }
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben