package elte.java2_utikalauz5.swing; /** Gombok használata Swingben.

A felhasználói felület bal oldalán kétállapotú stílusváltó gombok, tetején stílusváltó rádiógombok, jobb oldalán stílusváltó nyomógombok, alján pedig a gombok megjelenítését szabályozó kiválasztható gombok láthatók. A kétállapotú és sima nyomógombok ikonnal is rendelkeznek, amely el fog tűnni, ha az egérkurzorral a gomb területére lépünk. A felhasználói felület közepén a gombok jellemzőinek változását naplózó komponens található. Az alul található vezérlőpanel gombjai segítségével a gombokat engedélyezhetjük/letilthatjuk, ki/be lehet kapcsolni a gombok keretének, tartalmának és fókuszának megrajzolását, valamint szabályozható az egér figyelése, illetve a gombok szövegének és ikonjának igazítása. Az összes gomb megjelenítése nyomkövethető. @link.forrásfájl {@docRoot}/../data/swing/src GombTeszt.java @link.letöltés {@docRoot}/../data/swing GombTeszt.jar @since Java 2 Útikalauz programozóknak */ public class GombTeszt extends SwingTeszt implements java.awt.event.ItemListener , javax.swing.event.ChangeListener { /** 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 GombTeszt().init(argumentumok); } /** Applet leírása. @return A példaprogram leírása */ @Override public String getAppletInfo() { return "Gombok használatát bemutató tesztprogram"; } /** GUI felépítése */ @Override protected void felépít() { add(new javax.swing.JScrollPane(napló)); javax.swing.JPanel panel = new javax.swing.JPanel(); //vezérlő panel add(panel, java.awt.BorderLayout.SOUTH); panel.setPreferredSize(new java.awt.Dimension(100,100)); //kezdőméret javax.swing.JLabel címke=new javax.swing.JLabel("Kiválasztható gombok"); panel.add(címke); címke.setToolTipText("JCheckBox"); javax.swing.AbstractButton gomb = new javax.swing.JCheckBox("engedélyezve?", true); //engedélyez panel.add(gomb); gomb.setToolTipText("enabled"); gomb.setActionCommand("enable"); figyel( gomb ); gomb = new javax.swing.JCheckBox("egér figyelése?", true);//egérfigyelés panel.add(gomb); gomb.setToolTipText("rolloverEnabled"); gomb.setActionCommand("rollover"); figyel( gomb ); gomb=new javax.swing.JCheckBox("keret rajzolása?", true);//keretrajzolás panel.add(gomb); gomb.setToolTipText("borderPainted"); gomb.setActionCommand("border"); figyel( gomb ); gomb=new javax.swing.JCheckBox("fókusz rajzolása?",true); //fókuszrajzol panel.add(gomb); gomb.setToolTipText("focusPainted"); gomb.setActionCommand("focus"); figyel( gomb ); gomb=new javax.swing.JCheckBox("tartalom kitöltése?", true); //kitöltése panel.add(gomb); gomb.setToolTipText("contentAreaFilled"); gomb.setActionCommand("content"); figyel( gomb ); címke=new javax.swing.JLabel("Vízszintes pozíció"); //vízszintes pozíció panel.add(címke); címke.setToolTipText("horizontalTextPosition"); javax.swing.JComboBox vízszintes=new javax.swing.JComboBox(new Object[] {"RIGHT", "TRAILING", "CENTER", "LEADING", "LEFT"}); vízszintes.setActionCommand("vízszintes"); panel.add(vízszintes); vízszintes.setToolTipText("SwingConstants."); vízszintes.addActionListener(this); //kiválasztás figyelése címke=new javax.swing.JLabel("Függőleges pozíció"); //függőleges pozíció panel.add(címke); címke.setToolTipText("verticalTextPosition"); javax.swing.JComboBox függőleges=new javax.swing.JComboBox(new Object[] {"CENTER", "TOP", "BOTTOM"}); függőleges.setActionCommand("függőleges"); panel.add(függőleges); függőleges.setToolTipText("SwingConstants."); függőleges.addActionListener(this); //kiválasztás figyelése javax.swing.Box box = javax.swing.Box.createHorizontalBox(); add(box, java.awt.BorderLayout.NORTH); címke = new javax.swing.JLabel("Rádió gombok"); box.add(címke); címke.setToolTipText("JRadioButton"); javax.swing.ButtonGroup group = new javax.swing.ButtonGroup(); for (javax.swing.Action váltás : stílusváltások) { //stílusváltó gombok box.add(javax.swing.Box.createGlue()); gomb = new javax.swing.JRadioButton(váltás); box.add(gomb); group.add(gomb); figyel( gomb ); } box = javax.swing.Box.createVerticalBox(); címke = new javax.swing.JLabel("Kétállapotú gombok"); box.add(címke); címke.setToolTipText("JToggleButton"); add(box, java.awt.BorderLayout.WEST); for (javax.swing.Action váltás : stílusváltások) { //stílusváltó gombok box.add(javax.swing.Box.createGlue()); gomb = new javax.swing.JToggleButton(váltás); box.add(gomb); group.add(gomb); figyel( gomb ); } box = javax.swing.Box.createVerticalBox(); címke = new javax.swing.JLabel("Nyomógombok"); box.add(címke); címke.setToolTipText("JButton"); add(box, java.awt.BorderLayout.EAST); for (javax.swing.Action váltás : stílusváltások) { //stílusváltó gombok box.add(javax.swing.Box.createGlue()); gomb = new javax.swing.JButton(váltás); box.add(gomb); group.add(gomb); figyel( gomb ); } } /** Üres ikon */ private static javax.swing.Icon üresikon = new javax.swing.Icon() { /** Ikon magassága. @return @code{0}, mivel nincs mérete. */ public int getIconHeight() { return 0; } /** Ikon szélessége. @return @code{0}, mivel nincs mérete. */ public int getIconWidth() { return 0; } /** Ikon megjelenítése. Nem csinál semmit. @param komponens A megjelenítési komponens. @param g Rajzolási környezet. @param x Megjelenítési x koordináta. @param y Megjelenítési y koordináta. */ public void paintIcon( java.awt.Component komponens, java.awt.Graphics g, int x, int y ) {} }; /** Gomb eseményfigyelőinek regisztrálása. @param gomb A figyelendő gomb */ private void figyel( javax.swing.AbstractButton gomb ) { gomb.addActionListener(this); //gomb megnyomásának figyelése gomb.addItemListener(this); //gomb lenyomás/felengedés figyelése gomb.addChangeListener(this); //jellemzők változásának figyelése gomb.setRolloverIcon(üresikon); //nincs ikon egérbelépéskor nyomkövetés(gomb); //nyomkövethető a megjelenítés } /** Gomb eseményének naplózása. @param esemény A fellépett esemény leírása. @param gomb Az érintett gomb. */ private void naplóz(String esemény, javax.swing.AbstractButton gomb) { naplóz(gomb.getClass().getSimpleName()+" "+esemény+": "+gomb.getText()+ ", isSelected="+gomb.isSelected()+ ", isArmed="+gomb.getModel().isArmed()+ ", isPressed="+gomb.getModel().isPressed()); } /** Gombváltozások kijelzése. @param ce Változást jelző esemény */ public void stateChanged(javax.swing.event.ChangeEvent ce) { javax.swing.AbstractButton gomb = (javax.swing.AbstractButton)ce.getSource(); naplóz("ChangeEvent: isEnabled="+gomb.getModel().isEnabled()+ ", isRollover="+gomb.getModel().isRollover()+ ", isBorderPainted="+gomb.isBorderPainted()+ ", isFocusPainted="+gomb.isFocusPainted()+ ", isContentAreaFilled="+gomb.isContentAreaFilled(), gomb); } /** Gombok kiválasztása. @param ie Kiválasztási esemény */ public void itemStateChanged(java.awt.event.ItemEvent ie) { boolean kiválasztás = ie.getStateChange()== java.awt.event.ItemEvent.SELECTED; naplóz("ItemEvent("+(kiválasztás ? "szelekció" : "deszelekció")+")", (javax.swing.AbstractButton)ie.getSource()); } /** Gombnyomások kezelése. @param ae Gomblenyomási esemény */ public void actionPerformed(java.awt.event.ActionEvent ae) { javax.swing.AbstractButton gomb = ae.getSource() instanceof javax.swing. AbstractButton ? (javax.swing.AbstractButton)ae.getSource() : null; if (gomb!=null) naplóz("ActionEvent", gomb); String parancs = ae.getActionCommand(); if (parancs.equals("enable")) { //gombok engedélyezése/tiltása for (java.awt.Component konténer : getContentPane().getComponents()) for (java.awt.Component gombe : ((java.awt.Container)konténer).getComponents()) if (gombe instanceof javax.swing.AbstractButton) ((javax.swing.AbstractButton)gombe). setEnabled(gomb.isSelected()); } else if (parancs.equals("rollover")) { //egérfigyelés ki/bekapcsolása for (java.awt.Component konténer : getContentPane().getComponents()) for (java.awt.Component gombe : ((java.awt.Container)konténer).getComponents()) if (gombe instanceof javax.swing.AbstractButton) ((javax.swing.AbstractButton)gombe). setRolloverEnabled(gomb.isSelected()); } else if (parancs.equals("border")) { //keretrajzolás ki/bekapcsolása for (java.awt.Component konténer : getContentPane().getComponents()) for (java.awt.Component gombe : ((java.awt.Container)konténer).getComponents()) if (gombe instanceof javax.swing.AbstractButton) ((javax.swing.AbstractButton)gombe). setBorderPainted(gomb.isSelected()); } else if (parancs.equals("focus")) { //fókuszrajzolás ki/bekapcsolása for (java.awt.Component konténer : getContentPane().getComponents()) for (java.awt.Component gombe : ((java.awt.Container)konténer).getComponents()) if (gombe instanceof javax.swing.AbstractButton) ((javax.swing.AbstractButton)gombe). setFocusPainted(gomb.isSelected()); } else if (parancs.equals("content")) { for (java.awt.Component konténer : getContentPane().getComponents()) for (java.awt.Component gombe : ((java.awt.Container)konténer).getComponents()) if (gombe instanceof javax.swing.AbstractButton) ((javax.swing.AbstractButton)gombe). setContentAreaFilled(gomb.isSelected()); } else if (parancs.equals("vízszintes")) { //vízszintes igazítás int igazítás = 0; String választás = (String)((javax.swing.JComboBox)ae.getSource()). getSelectedItem(); if (választás.equals("RIGHT")) //jobb szélre igazítás = javax.swing.SwingConstants.RIGHT; else if (választás.equals("LEADING")) //ikon végéhez igazítás = javax.swing.SwingConstants.LEADING; else if (választás.equals("CENTER")) //középre igazítás = javax.swing.SwingConstants.CENTER; else if (választás.equals("TRAILING")) //ikon elejéhez igazítás = javax.swing.SwingConstants.TRAILING; else if (választás.equals("LEFT")) //bal szélre igazítás = javax.swing.SwingConstants.LEFT; for (java.awt.Component konténer : getContentPane().getComponents()) for (java.awt.Component gombe : ((java.awt.Container)konténer).getComponents()) if (gombe instanceof javax.swing.AbstractButton) ((javax.swing.AbstractButton)gombe). setHorizontalTextPosition(igazítás); } else if (parancs.equals("függőleges")) { //függőleges igazítás int igazítás = 0; String választás = (String)((javax.swing.JComboBox)ae.getSource()). getSelectedItem(); if (választás.equals("TOP")) //fent igazítás = javax.swing.SwingConstants.TOP; else if (választás.equals("BOTTOM")) //lent igazítás = javax.swing.SwingConstants.BOTTOM; else if (választás.equals("CENTER")) //középre igazítás = javax.swing.SwingConstants.CENTER; for (java.awt.Component konténer : getContentPane().getComponents()) for (java.awt.Component gombe : ((java.awt.Container)konténer).getComponents()) if (gombe instanceof javax.swing.AbstractButton) ((javax.swing.AbstractButton)gombe). setVerticalTextPosition(igazítás); } } }