JToolBar ein/ausblenden

Status
Nicht offen für weitere Antworten.

cr3m4

Mitglied
Hallo Leute,

doofe Frage, wie aktiviere, bzw deaktiviere ich ne JToolBar?

ich habe ein Menü mit CheckboxMenuItems für die Abfrage welche JToolBar angezeigt werden soll.
Also wie z.b. in Office unter "Ansicht-Symbolleisten".

Bei der Abfrage passiert jedoch leider nichts.

Hier mein bishheriger Lösungsansatz:

Code:
public void getToolBarState(char t, boolean b)
		{
			switch(t)
			{
			case 'f':
                                {
				jToolBar1.setVisible(b); 
                                jToolBar1.setEnabled(b);
			        }
			}
			
		}

wenn ich eine Ausgabe von 'b' im case-zweig mache, wird mir true/false auch angezeigt, also an der wertübergabe liegts nicht.

Gibts ne spezielle Methode für Toolbars?

danke
 

L-ectron-X

Gesperrter Benutzer
Die setVisible()-Methode ist dafür schon richtig. Damit kannst du die JToolBar sichtbar oder unsichtbar machen.
 
G

Gast

Gast
Und vielleicht noch das ganze (re)validieren... mit validate() bzw revalidate()
 

cr3m4

Mitglied
also ich habe setenabled, setvisible auf false gesetzt, validated, revalidated, repainted, komponente removed, alles ohne erfolg. selbst wenn ich das komplette Panel mit den Toolbars entfernen will, funzt dat nit.

hier mal etwas code, vielleicht habt ihr so nen besseren überblick:

Frame zur Darstellung:
Code:
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;

import javax.swing.AbstractAction;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JPanel;
import javax.swing.JToolBar;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;
import javax.swing.border.BevelBorder;

public class Fenster extends javax.swing.JFrame {
   private static final long   serialVersionUID   = 1L;
   
   private StdMenu std_jMenuBar=new StdMenu();
   private JPanel jPanel2;
   private JPanel jPanel1;
   private ButtonPanel buttonPanel1;
   private JPanel center_jPanel;
   private JPanel top_jPanel;

   /***Main-Methode***/
   public static void main(String[] args) {
      SwingUtilities.invokeLater(new Runnable() {
         public void run() {
        		 Fenster inst = new Fenster();
            inst.setLocationRelativeTo(null);
            inst.setVisible(true);
         }
      });
   }
   /***Ende Main-Methode***/
   
   public Fenster() {
      super();
      initGUI();
   }
   
   private void initGUI() {
      try {
         setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
         this.setPreferredSize(new java.awt.Dimension(800, 600));

            {
               top_jPanel = new JPanel();
               BorderLayout top_jPanelLayout = new BorderLayout();
               top_jPanel.setLayout(top_jPanelLayout);
               getContentPane().add(top_jPanel, BorderLayout.NORTH);
               top_jPanel.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
               top_jPanel.setPreferredSize(new java.awt.Dimension(10, 42));
               top_jPanel.add(getButtonPanel1(), BorderLayout.CENTER);
               top_jPanel.add(getJPanel1(), BorderLayout.NORTH);
               top_jPanel.add(getJPanel2(), BorderLayout.SOUTH);
            }
               {
                  center_jPanel = new JPanel();
                  getContentPane().add(center_jPanel, BorderLayout.CENTER);
               }
            {   
               setJMenuBar(std_jMenuBar.getStd_jMenuBar("bafdlespvwh"));
   
            }
         pack();
         this.setSize(800, 600);
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
   
   private ButtonPanel getButtonPanel1() {
         
         buttonPanel1 = new ButtonPanel();
         BoxLayout buttonPanel1Layout = new BoxLayout(buttonPanel1, javax.swing.BoxLayout.X_AXIS);
         
         buttonPanel1.setLayout(buttonPanel1Layout);
         buttonPanel1.setButtonGroupEnabled("h");
         
         return buttonPanel1;
   }
   
   private JPanel getJPanel1() {
         if(jPanel1 == null) {
            jPanel1 = new JPanel();
            jPanel1.setPreferredSize(new java.awt.Dimension(10, 2));
         }
         return jPanel1;
   }
   
   private JPanel getJPanel2() {
         if(jPanel2 == null) {
            jPanel2 = new JPanel();
            jPanel2.setPreferredSize(new java.awt.Dimension(10, 2));
         }
         return jPanel2;
   }
   /**!***/ 
   private ButtonPanel removeButtonPanel1() {
         
         remove(buttonPanel1);
         
         buttonPanel1.setButtonGroupEnabled("");
         
         buttonPanel1.setEnabled(false);
         buttonPanel1.setVisible(false);
         
         buttonPanel1.revalidate();
         
         return buttonPanel1;
   }
   /**!***/ 
   public void setToolBarStatus(boolean b)
      {
         
         if(!b)
         removeButtonPanel1();
         
         System.out.println("deleted");  //der text wird ausgegeben, also der Methodenaufruf funktioniert.
      }
         
}

Das Toolbar:
Code:
class ButtonPanel extends javax.swing.JPanel {
 
 /**
	 * 
	 */
	private static final long	serialVersionUID	= 1L;
private JToolBar      haupt_JToolBar;
 private JButton         ersterButton;
 private JButton       zweiterButton;
 private JPanel 		jPanel1;

/** Da ich die Klassen in unterschiedlichen Fenstern verwende, lege ich somit fest welche Panels dargestellt werden **/
public void setButtonGroupEnabled(String tb)   //h für hauptToolbar,
    {         
       char menuAdd[]=new char[tb.length()];
       for(int i=0;i<tb.length();i++)
       {
       menuAdd[i]=tb.charAt(i);
       
       if(menuAdd[i]=='h')
          jPanel1.add(getHaupt_JToolBar());

       jPanel1.revalidate(); repaint();
       }
    }

public ButtonPanel()
    {
       BorderLayout thisLayout = new BorderLayout();

       this.setLayout(thisLayout);
       this.setPreferredSize(new java.awt.Dimension(535, 37));
       this.setSize(535, 30);
       this.add(getJPanel1(), BorderLayout.CENTER);

       return;
    }

private JToolBar getHaupt_JToolBar()
    {
       haupt_JToolBar = new JToolBar();
       GridLayout haupt_JPanelLayout = new GridLayout(1, 1);
       haupt_JPanelLayout.setVgap(0);
       haupt_JPanelLayout.setColumns(1);
       haupt_JPanelLayout.setHgap(5);
       haupt_JToolBar.setLayout(haupt_JPanelLayout);
       haupt_JToolBar.setPreferredSize(new java.awt.Dimension(198, 30));
       haupt_JToolBar.add(getErsterButton());
       haupt_JToolBar.add(getZweiterButton());

       return haupt_JToolBar;
    }

private JButton getErsterButton()
    {
       ersterButton = new JButton();
       ersterButton.setToolTipText("nr1");
       ersterButton.setPreferredSize(new java.awt.Dimension(25, 25));
       return ersterButton;
    }

private JButton getZweiterButton()
    {
       zweiterButton = new JButton();
       zweiterButton .setToolTipText("nr2");
       zweiterButton .setPreferredSize(new java.awt.Dimension(25, 25));
       return zweiterButton ;
    }




private JPanel getJPanel1() {
       if(jPanel1 == null) {
          jPanel1 = new JPanel();
          FlowLayout jPanel1Layout = new FlowLayout();
          jPanel1Layout.setAlignment(FlowLayout.LEFT);
          jPanel1Layout.setVgap(2);
          jPanel1Layout.setHgap(10);
          jPanel1.setLayout(jPanel1Layout);
          jPanel1.setPreferredSize(new java.awt.Dimension(455, 24));
                              //siehe SetButtonGroupEnabled
       }
       return jPanel1;
 } 
    }

Menüleiste:
Code:
Klasse Standardmenü

class StdMenu extends JMenuBar
{
 private static final long   serialVersionUID   = 1L;
 
 private JMenuBar std_jMenuBar;
 private JMenu ansicht_Menu;
 private JMenu toolbar_Menu;
 private AbstractAction popupMenu_abstractAction;

      private JCheckBoxMenuItem hauptToolbarMenuItem;

public JMenuBar getStd_jMenuBar(String getmenu)
    {
       std_jMenuBar= new JMenuBar();

       std_jMenuBar.add(getAnsicht_Menu());
          
       return std_jMenuBar;
    }

private JMenu getAnsicht_Menu()
    {
       ansicht_Menu=new JMenu();
       ansicht_Menu.setText("Ansicht");
       
       ansicht_Menu.add(getToolbar_Menu());

       return ansicht_Menu;
       
    }

private JMenu getToolbar_Menu()
    {
       toolbar_Menu=new JMenu();
       toolbar_Menu.setText("Symbolleisten");
       toolbar_Menu.add(getHauptToolbarMenuItem());
       
       return toolbar_Menu;
    }

private JCheckBoxMenuItem getHauptToolbarMenuItem()
    {
       hauptToolbarMenuItem=new JCheckBoxMenuItem();
       hauptToolbarMenuItem.setText("HauptLeiste");
       hauptToolbarMenuItem.addActionListener(getPopupMenu_abstractAction());
       
       return hauptToolbarMenuItem;
    }

/***********************************************************/
private AbstractAction getPopupMenu_abstractAction() {
       if(popupMenu_abstractAction == null) {
          popupMenu_abstractAction = new AbstractAction("", null) {

                private static final long   serialVersionUID   = 1L;

                public void actionPerformed(ActionEvent evt) {

                                       /**Hier wird die Methode zum Panel-Deaktivieren aufgerufen.**/
                                              if(evt.getSource()==hauptToolbarMenuItem)
                      {
        /**!***/                       new Fenster().setToolBarStatus(hauptToolbarMenuItem.isSelected());

                      }
                }
          };
       }
       return popupMenu_abstractAction;
 }
}
 

thE_29

Top Contributor
Dir ist schon klar das du immer ein komplett neues Fenster/JFrame Objekt erzeugst wenn du new Fenster() sagst?
Und somist du eine falsche Referenz wegblendest?
 

cr3m4

Mitglied
hmm, stimmt. aber wie ruf ich ne Methode die in der Hauptklasse angesiedelt ist in na Nebenklasse auf, ohne dass sich die Hauptklasse immerwieder selber aufruft? Da hab ich glaub ich grad nen Denkfehler :)
 

thE_29

Top Contributor
Entweder via dem Singleton Pattern oder du übergibst deiner Toolbar Klasse die Referenz zu dem Fenster!

Eventuell würde mach auch via getTopLevelAncestor() drankommen!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
kaoZ Swing JToolBar, ImageIcon werden teilweise verdeckt AWT, Swing, JavaFX & SWT 0
U JToolbar resizable o. Ä. AWT, Swing, JavaFX & SWT 3
kaoZ Swing JToolBar AWT, Swing, JavaFX & SWT 13
U JToolBar Button nicht fokussieren AWT, Swing, JavaFX & SWT 2
B JToolBar dynamisch auf mehrere Zeilen erweitern AWT, Swing, JavaFX & SWT 2
Landei Swing JToolbar: Textfelder mit normaler Höhe? AWT, Swing, JavaFX & SWT 2
P Swing JComoBox auf JToolBar AWT, Swing, JavaFX & SWT 4
B Komponente "sauber" entfernen(JToolBar) AWT, Swing, JavaFX & SWT 4
I Swing Optik eines JButton an JToolBar anpassen AWT, Swing, JavaFX & SWT 5
S Drag wie bei JToolbar mit JPanel AWT, Swing, JavaFX & SWT 3
H Swing Den Button einer JToolBar gedrückt halten AWT, Swing, JavaFX & SWT 9
S Hintergrundfarbe in JToolbar nicht angezeigt AWT, Swing, JavaFX & SWT 2
C JToolbar in JTable AWT, Swing, JavaFX & SWT 4
R JMenu in JToolBar AWT, Swing, JavaFX & SWT 6
O Button auf JToolBar rechtsbündig AWT, Swing, JavaFX & SWT 2
M Swing JToolBar Probleme AWT, Swing, JavaFX & SWT 14
A JToolbar lässt sich aus dem Fenster lösen AWT, Swing, JavaFX & SWT 2
E JToolBar ausrichten AWT, Swing, JavaFX & SWT 2
J Swing JToolBar Button mit Icon AWT, Swing, JavaFX & SWT 4
J JToolBar AWT, Swing, JavaFX & SWT 2
M JToolbar nebeneinander? AWT, Swing, JavaFX & SWT 3
H JToolBar Rollover AWT, Swing, JavaFX & SWT 2
D JtoolBar feste Breite ? AWT, Swing, JavaFX & SWT 13
G Icon ans Ende einer JToolbar AWT, Swing, JavaFX & SWT 7
B Toolbar, Toolbar In Toolbar, alterna zu JToolbar AWT, Swing, JavaFX & SWT 3
G JToolBar - addSeparator() funktioniert nicht AWT, Swing, JavaFX & SWT 3
G JToolBar Separator AWT, Swing, JavaFX & SWT 6
W JToolBar - wohin damit? AWT, Swing, JavaFX & SWT 4
Noar Problem mit Hinzufügen von JToolBar AWT, Swing, JavaFX & SWT 2
G JToolbar gleich als eigenes Fenster öffnen AWT, Swing, JavaFX & SWT 2
A JToolBar: Welcher Button wurde gedrückt? AWT, Swing, JavaFX & SWT 5
A JToolBar: Buttonbreite festlegen AWT, Swing, JavaFX & SWT 7
M Problem mit JComboBox in JToolBar AWT, Swing, JavaFX & SWT 3
padde479 Mehrere JToolBar setzen AWT, Swing, JavaFX & SWT 2
P JMenuBar und JToolBar Anzeige Probleme AWT, Swing, JavaFX & SWT 5
A Hintergrundfrabe eines JButtons innerhalb eines JToolBar AWT, Swing, JavaFX & SWT 4
G JButton wie in JToolBar AWT, Swing, JavaFX & SWT 7
vogella JToolBar mit JTextField - Größe des Text Feldes festlegen AWT, Swing, JavaFX & SWT 2
C JToolBar nicht minimieren beim Minimieren des Eltern-Frames AWT, Swing, JavaFX & SWT 4
S Mehere Componenten setEnabled(false) in JToolBar AWT, Swing, JavaFX & SWT 4
S JToolBar und JTabbedPane AWT, Swing, JavaFX & SWT 2
B scrollbare jtoolbar sobald fenster zu klein wird AWT, Swing, JavaFX & SWT 5
B floating jtoolbar von programmstart an? AWT, Swing, JavaFX & SWT 4
B JToolBar Button größe AWT, Swing, JavaFX & SWT 10
I Button in JToolbar gleich groß AWT, Swing, JavaFX & SWT 2
I Hat jemand eine JToolBar? AWT, Swing, JavaFX & SWT 4
A Vertikaler JSeparator in einer JToolbar AWT, Swing, JavaFX & SWT 2
A JToolBar nur oben andockbar machen - wie? AWT, Swing, JavaFX & SWT 6
M Gruppierungen in JToolbar AWT, Swing, JavaFX & SWT 3
T Mehrere Fragen zu JToolBar AWT, Swing, JavaFX & SWT 2
MiMa BorderPane Seiten ein und ausblenden? AWT, Swing, JavaFX & SWT 16
B FXML GUI - Button ausblenden AWT, Swing, JavaFX & SWT 1
N JButton ausblenden AWT, Swing, JavaFX & SWT 2
R Swing Elemente verschieben sich im GBL beim Ein/Ausblenden AWT, Swing, JavaFX & SWT 0
1 JButton nach Klick ausblenden AWT, Swing, JavaFX & SWT 6
L Columns in JTable ein / ausblenden AWT, Swing, JavaFX & SWT 1
BRoll JButton Text nicht ausblenden ("...") AWT, Swing, JavaFX & SWT 2
S jLabel / jText beim starten ausblenden AWT, Swing, JavaFX & SWT 2
I Swing JTextField ausblenden -? AWT, Swing, JavaFX & SWT 6
B JButton ausblenden AWT, Swing, JavaFX & SWT 12
B JButton Rahmen ausblenden AWT, Swing, JavaFX & SWT 3
E BufferedImage Alphaknal ein- und ausblenden AWT, Swing, JavaFX & SWT 7
2 AWT Borderlayout: Grafikelemente ein und ausblenden AWT, Swing, JavaFX & SWT 2
C Swing JTable: Horizontale Linie bei einzelnen Zellen ausblenden AWT, Swing, JavaFX & SWT 5
E Swing JTable Spalten ausblenden?! AWT, Swing, JavaFX & SWT 3
A Swing Spalte in JTable ausblenden AWT, Swing, JavaFX & SWT 4
Airwolf89 Swing Tabs dynamisch ausblenden AWT, Swing, JavaFX & SWT 3
G JTree Knoten ein / ausblenden AWT, Swing, JavaFX & SWT 3
K JFreeChart im JScrollPane ausblenden AWT, Swing, JavaFX & SWT 2
K Swing JPanel ausblenden AWT, Swing, JavaFX & SWT 3
Dit_ Mit Button "Weiter" neues Panel laden, altes ausblenden... AWT, Swing, JavaFX & SWT 4
E JLabel nach Zeit X ausblenden AWT, Swing, JavaFX & SWT 12
H Panel ein- und ausblenden funktioniert nicht AWT, Swing, JavaFX & SWT 9
T JLabel in Frame ein- und ausblenden? AWT, Swing, JavaFX & SWT 2
F Titelleiste von JDialog ausblenden mit Synthetica L&F AWT, Swing, JavaFX & SWT 2
R JSplitPane automatisch ausblenden AWT, Swing, JavaFX & SWT 13
G Statusmeldung anzeigen und nach gewisser Zeit ausblenden AWT, Swing, JavaFX & SWT 4
T Composites ein- und ausblenden AWT, Swing, JavaFX & SWT 16
Z Applet ausblenden AWT, Swing, JavaFX & SWT 5
G JButton und andere J-Elemente: Markierung ausblenden AWT, Swing, JavaFX & SWT 6
G Suche 2 Componenten: Splitpane ausblenden / Stecknadel AWT, Swing, JavaFX & SWT 2
masta // thomas JTree - Knoten ausblenden. AWT, Swing, JavaFX & SWT 3
G JTable Rahmen ausblenden AWT, Swing, JavaFX & SWT 2
B Swing Logging: Ein/Ausblenden eines scrollenden JTextPane AWT, Swing, JavaFX & SWT 2
O Panels ein und ausblenden - geht das? AWT, Swing, JavaFX & SWT 3
S JDialog "X" ausblenden AWT, Swing, JavaFX & SWT 3
S JFrame "X" schaltfläche ausblenden AWT, Swing, JavaFX & SWT 15
M Tab von JTabbedPane ausblenden? AWT, Swing, JavaFX & SWT 6
J JButton Label ausblenden AWT, Swing, JavaFX & SWT 4
W JTree je nach selektion JPane ein und ausblenden AWT, Swing, JavaFX & SWT 7
S Koordinaten/Raster (ähnlich Schachbrett) anzeigen/ausblenden AWT, Swing, JavaFX & SWT 10
T JMenuBar ausblenden lassen aber Hotkeys sollen erhalten sein AWT, Swing, JavaFX & SWT 2
Luma Spalte einer Tabelle ausblenden AWT, Swing, JavaFX & SWT 8
S Fensterbuttons (min / max / close) ausblenden AWT, Swing, JavaFX & SWT 5
M Fenster wechseln bzw. ein/ausblenden AWT, Swing, JavaFX & SWT 2
D Knoten in JTree ausblenden. AWT, Swing, JavaFX & SWT 12
S Im JTable Zeilen ein-/ausblenden AWT, Swing, JavaFX & SWT 6
P JTree -> nodes ausblenden bzw nicht anzeigen AWT, Swing, JavaFX & SWT 7
P JDialog() (X) ausblenden, wie? AWT, Swing, JavaFX & SWT 3
T JTree ausblenden AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen


Oben