package elte.java2_utikalauz5.swing; /** Segédeszköz panel használata Swingben.
A felhasználói felületen egy segédeszköz panelt lehet tetszőleges oldalra elhelyezni, amely a megjelenési stílust váltó gombokat tartalmaz. A felület közepén látható vezérlő panel gombjaival a segédeszköz panel engedélyezettségét, mozgathatóságát, valamint keretének megrajzolását és ablakon belüli pozícióját lehet szabályozni. A segédeszköz panel megjelenítése nyomkövethető. @link.forrásfájl {@docRoot}/../data/swing/src JToolBarTeszt.java @link.letöltés {@docRoot}/../data/swing JToolBarTeszt.jar @since Java 2 Útikalauz programozóknak */ public class JToolBarTeszt extends SwingTeszt implements javax.swing.event.AncestorListener, java.awt.event.ItemListener { /** Verziószám. */ private final static long serialVersionUID = 15L; /** Indítás alkalmazásként. @param argumentumok Az indításkor megadott paraméterek. */ public static void main(String argumentumok[]) { new JToolBarTeszt().init(argumentumok); } /** Applet leírása. @return A példaprogram leírása */ @Override public String getAppletInfo() { return "Segédeszköz panel használatát bemutató tesztprogram"; } /** Segédeszköz panel */ private javax.swing.JToolBar segédeszközpanel; /** Segédeszközpanel elhelyezése */ private javax.swing.JComboBox legördülőlista; /** GUI felépítése */ @Override protected void felépít() { segédeszközpanel = new javax.swing.JToolBar(); segédeszközpanel.addAncestorListener(this); javax.swing.AbstractButton gomb; for (javax.swing.Action váltás : stílusváltások) { gomb = segédeszközpanel.add(váltás);//stílusváltás gomb.setText((String)váltás.getValue(váltás.NAME)); } add(segédeszközpanel, java.awt.BorderLayout.NORTH); javax.swing.JPanel panel = new javax.swing.JPanel(); //gombok panelje add( panel ); gomb = new javax.swing.JCheckBox("engedélyezett", segédeszközpanel.isEnabled()); panel.add(gomb); //engedélyező gomb gomb.setToolTipText("enabled"); gomb.setActionCommand("enable"); gomb.addActionListener(this); //gomb kiválasztásának figyelése gomb = new javax.swing.JCheckBox("mozgatható", segédeszközpanel.isFloatable()); panel.add(gomb); //mozgathatósági gomb gomb.setToolTipText("floatable"); gomb.setActionCommand("float"); gomb.addActionListener(this); //gomb kiválasztásának figyelése gomb = new javax.swing.JCheckBox("keretes", segédeszközpanel.isBorderPainted()); panel.add(gomb); //keretrajzolási gomb gomb.setToolTipText("borderPainted"); gomb.setActionCommand("border"); gomb.addActionListener(this); //gomb kiválasztásának figyelése panel.add(new javax.swing.JLabel("Segédeszköz panel helye:")); legördülőlista = new javax.swing.JComboBox(new Object[] { java.awt.BorderLayout.NORTH,java.awt.BorderLayout.EAST, java.awt.BorderLayout.SOUTH, java.awt.BorderLayout.WEST}); panel.add(legördülőlista); legördülőlista.setToolTipText("BorderLayout."); legördülőlista.addItemListener(this); //kiválasztás figyelése nyomkövetés(segédeszközpanel); //nyomkövethető a megjelenítése } /** Vezérlőgombok kezelése. @param ae Gomblenyomási esemény */ public void actionPerformed(java.awt.event.ActionEvent ae) { javax.swing.JCheckBox gomb = (javax.swing.JCheckBox)ae.getSource(); if (ae.getActionCommand().equals("float")) //mozgathatóság állítása segédeszközpanel.setFloatable(gomb.isSelected()); else if (ae.getActionCommand().equals("border")) //keretrajzolás ki/be segédeszközpanel.setBorderPainted(gomb.isSelected()); else segédeszközpanel.setEnabled(gomb.isSelected()); } /** Segédeszközpanel helyének megváltoztatása. @param ie Kiválasztási esemény */ public void itemStateChanged(java.awt.event.ItemEvent ie) { if (ie.getStateChange()!=java.awt.event.ItemEvent.SELECTED) return; String választás = (String)ie.getItem(); if (segédeszközpanel.getParent()!=getContentPane())//különablak bezárása javax.swing.SwingUtilities.windowForComponent(segédeszközpanel). setVisible(false); segédeszközpanel.setOrientation(legördülőlista.getSelectedIndex()%2==1 ? segédeszközpanel.VERTICAL : segédeszközpanel.HORIZONTAL); getContentPane().add(segédeszközpanel, választás); //panel új helye getContentPane().validate(); //átmozgatás miatt szükséges } /** Segédeszközpanel felvétele és az új hely kijelzése. @param ae Felvételt jelző esemény */ public void ancestorAdded(javax.swing.event.AncestorEvent ae) { javax.swing.SwingUtilities.invokeLater(new Runnable() { //időzíteni kell public void run() { //hogy megkapjuk az új végleges helyet legördülőlista.setSelectedItem(((java.awt.BorderLayout) getContentPane().getLayout()).getConstraints(segédeszközpanel)); } }); } public void ancestorRemoved(javax.swing.event.AncestorEvent ae) {} public void ancestorMoved(javax.swing.event.AncestorEvent ae) {} }