package elte.java2_utikalauz5.swing; /** Többoldalas panel használata Swingben.

A felhasználói felületen egy többoldalas panel látható, melybe új oldalt felvenni vagy a fülek helyzetét, illetve sorbarendezési módját megváltoztatni az alatta levő vezérlő panel gombjaival lehet. A panel minden oldala sorszámmal rendelkezik, ami az oldal keretén látható. Minden oldal külön engedélyezhető/letiltható, törölhető, lehet elé és mögé is új oldalt beszúrni, illetve lapozni lehet az előtte vagy utána következő oldalra. Az ezen funkciókat elvégző gombok minden oldalon megtalálhatóak. Kezdetben az ismert megjelenítési stílusok mint kiválasztható fülek jelennek meg, melyek kiválasztása az adott megjelenítési stílus aktivizálását vonja maga után. A felhasználói felület tetején levő komponensben a többoldalas panel kiválasztott oldalának indexe kerül naplózásra. A többoldalas panel megjelenítése nyomkövethető. @link.forrásfájl {@docRoot}/../data/swing/src JTabbedPaneTeszt.java @link.letöltés {@docRoot}/../data/swing JTabbedPaneTeszt.jar @since Java 2 Útikalauz programozóknak */ public class JTabbedPaneTeszt extends SwingTeszt implements javax.swing.event.ChangeListener, 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 JTabbedPaneTeszt().init(argumentumok); } /** Applet leírása. @return A példaprogram leírása */ @Override public String getAppletInfo() { return "Többoldalas panel használatát bemutató tesztprogram"; } /** Többoldalas panel */ private javax.swing.JTabbedPane többoldalaspanel; /** GUI felépítése */ @Override protected void felépít() { többoldalaspanel = new javax.swing.JTabbedPane(); add(new javax.swing.JScrollPane(napló), java.awt.BorderLayout.NORTH); add(többoldalaspanel); for (javax.swing.Action váltás : stílusváltások) { //stílusváltó gombok Oldal oldal = new Oldal(); többoldalaspanel.addTab(váltás.toString(), (javax.swing.Icon) váltás.getValue(váltás.SMALL_ICON), oldal, váltás.toString()); if (!váltás.isEnabled()) többoldalaspanel.setSelectedComponent(oldal); } javax.swing.JPanel panel = new javax.swing.JPanel(); //vezérlő panel add(panel, java.awt.BorderLayout.SOUTH); javax.swing.JButton gomb = new javax.swing.JButton("új oldal"); panel.add(gomb); gomb.setToolTipText("addTab"); gomb.addActionListener(this); //nyomógomb figyelése javax.swing.JLabel címke = new javax.swing.JLabel("Fülek helye:"); panel.add(címke); címke.setToolTipText("tabPlacement"); javax.swing.JComboBox legördülőlista=new javax.swing.JComboBox(new Object[] {"TOP", "BOTTOM", "LEFT", "RIGHT"}); panel.add(legördülőlista); legördülőlista.setToolTipText("SwingConstants"); legördülőlista.addItemListener(this); //kiválasztás figyelése címke = new javax.swing.JLabel("Fülsor:"); panel.add(címke); címke.setToolTipText("tabLayoutPolicy"); legördülőlista=new javax.swing.JComboBox(new Object[]{"WRAP_TAB_LAYOUT", "SCROLL_TAB_LAYOUT"}); panel.add(legördülőlista); legördülőlista.addItemListener(this); //kiválasztás figyelése többoldalaspanel.addChangeListener(this); //oldalváltás figyelése setPreferredSize(new java.awt.Dimension(450, 400)); nyomkövetés(többoldalaspanel); //nyomkövethető a megjelenítés } /** Oldalváltás kijelzése. @param ce Változást jelző esemény */ public void stateChanged(javax.swing.event.ChangeEvent ce) { final Oldal oldal = (Oldal)többoldalaspanel.getSelectedComponent(); naplóz("ChangeEvent: aktuális oldalindex="+ //aktuális oldal naplózása többoldalaspanel.getSelectedIndex()); if (oldal !=null && oldal.sorszám<=stílusváltások.size()) //stílusváltás stílusváltás(stílusváltások.elementAt(oldal.sorszám-1)); } /** Fülek helyénke 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; int fülekhelye = többoldalaspanel.getTabPlacement(); int fülsor = többoldalaspanel.getTabLayoutPolicy(); String választás = (String)ie.getItem(); if (választás.equals("TOP")) fülekhelye = többoldalaspanel.TOP; //fent else if (választás.equals("BOTTOM")) fülekhelye = többoldalaspanel.BOTTOM; //lent else if (választás.equals("LEFT")) fülekhelye = többoldalaspanel.LEFT; //balra else if (választás.equals("RIGHT")) fülekhelye = többoldalaspanel.RIGHT; //jobbra else if (választás.equals("WRAP_TAB_LAYOUT")) fülsor = többoldalaspanel.WRAP_TAB_LAYOUT; //több sorba else if (választás.equals("SCROLL_TAB_LAYOUT")) fülsor = többoldalaspanel.SCROLL_TAB_LAYOUT; //egy sorba többoldalaspanel.setTabPlacement(fülekhelye); többoldalaspanel.setTabLayoutPolicy(fülsor); } /** Vezérlőgombok kezelése. @param ae Gomblenyomási esemény */ public void actionPerformed(java.awt.event.ActionEvent ae) { int index = többoldalaspanel.getSelectedIndex(); //oldalindex javax.swing.AbstractButton gomb = (javax.swing.AbstractButton)ae.getSource(); if (ae.getActionCommand().equals("after")) { //beszúrás mögéje Oldal oldal = new Oldal(); többoldalaspanel.insertTab(oldal.sorszám+". oldal", null, oldal, oldal.sorszám+". segédszöveg", index+1); } else if (ae.getActionCommand().equals("before")) { //eléje Oldal oldal = new Oldal(); többoldalaspanel.insertTab(oldal.sorszám+". oldal", null, oldal, oldal.sorszám+". segédszöveg", index); } else if (ae.getActionCommand().equals("remove")) { //törlés többoldalaspanel.removeTabAt(index); stateChanged( null ); } else if (ae.getActionCommand().equals("enable")) { //engedélyezés többoldalaspanel.setEnabledAt(index, gomb.isSelected()); } else if (ae.getActionCommand().equals("prev")) { //lapozás vissza if (index>0) többoldalaspanel.setSelectedIndex(index-1); } else if (ae.getActionCommand().equals("next")) { //lapozás előre if (index