Event auf JTabbedPane abfragen ?

Status
Nicht offen für weitere Antworten.
N

Narret se mer

Gast
Zickezacke alles Kacke :p

Narri Ihr Leut`

Ich möchte code ausführen wenn der Anwender auf eines meiner 3 JTabbedPanes klickt.

Alles in meinem code war ohne Fehler bis ich diesen codeblock hinzufügte:

seither wird z.B. das MyDockedWindow nicht mehr erkannt (cant be resolved...) ChangeListener und CompenentAdapter sind auch beide unterstrichen (cant be resolved to a type).

Kann mir jemand helfen die Fehler zu beseitigen, so dass ich auf das klicken auf einen Tab reagieren kann?

Code:
 jtp.addChangeListener(new ChangeListener() {
       // This method is called whenever the selected tab changes
       public void stateChanged(ChangeEvent evt) {
           JTabbedPane pane = (JTabbedPane)evt.getSource();
   
           // Get current tab
           //int sel = pane.getSelectedIndex();
       }
   });

Code:
public class MainWindow extends JFrame implements ChangeListener
{    
   static final long serialVersionUID = 1L;    
   static MainWindow myWindow;
   private MyDialog dialog;  
      
   public MainWindow() throws IOException
   {
	  super("PanelTest");  
	 
	  dialog = new MyDialog(); 
	  myWindow = this;	  
      addComponentListener(new MyDockedWindow());      
	  //setIconImage(new ImageIcon("images/Dir.png").getImage());       
	  
	  JTabbedPane jtp = new JTabbedPane();
	  TemplatePanel TP = new TemplatePanel();
	  RessourcePanel  RP = new RessourcePanel(dialog); 
	  SettingsPanel SP = new SettingsPanel(/*this*/);
	  
      Info IP        = new Info(dialog);   
      
      RP.setNP(IP);
      NP.setRP(RP);
      RP.setTP(TP);
      
      jtp.addTab("Ressources", RP);
      jtp.addTab("Settings", SP);
      jtp.addTab("Template", TP);   
            
      add(jtp); 	
      
      setSize(380,523);
      setLocationRelativeTo(null);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      setResizable(false);
      setVisible(true);	
   }     
   
   jtp.addChangeListener(new ChangeListener() {
       // This method is called whenever the selected tab changes
       public void stateChanged(ChangeEvent evt) {
           JTabbedPane pane = (JTabbedPane)evt.getSource();
   
           // Get current tab
           //int sel = pane.getSelectedIndex();
       }
   });  
  
   
   class MyDockedWindow extends ComponentAdapter
   {
      public void componentMoved(ComponentEvent e)
      {         
    	  dialog.setBounds(myWindow.getX() - 590, myWindow.getY(),590, 530);  
      }      
   }  

   public static void main(String args[]) throws Exception
   {
	   SubstanceLookAndFeel slnf = new SubstanceLookAndFeel();
	   SubstanceLookAndFeel.setCurrentTheme(new SubstanceAquaTheme());
	   SubstanceLookAndFeel.setCurrentButtonShaper(new ClassicButtonShaper());	
	   
	      try				
	      {                
	       UIManager.put("Label.foreground",new Color(115,130,170));       
	       UIManager.setLookAndFeel(slnf);    
	       JFrame.setDefaultLookAndFeelDecorated(true); 
	      }
	      catch (Exception e)
	      {
	        e.printStackTrace();
	      }  
	      
	      EventQueue.invokeLater(new Runnable()
	      {
		      public void run()
		      {	      
				try 
				{ 				
					new MainWindow(); 
				}
				catch (IOException e)
				{				
					e.printStackTrace();
				}	                    
		      }
	      });  	      
   }
}
 

outbreaker

Bekanntes Mitglied
is klar
weil du deinen ChangeListener außerhalb einer Methode hinzufügst wenn ich das richtig sehe :wink:

dein Konstruktor wird schon in Zeile 38 geschlossen :!:
 
A

Auweija

Gast
outbreaker hat gesagt.:
is klar
weil du deinen ChangeListener außerhalb einer Methode hinzufügst wenn ich das richtig sehe :wink:

dein Konstruktor wird schon in Zeile 38 geschlossen :!:

auweija klar recht haste gar nicht gesehen... da diese anonyme konstruk aussah wie ne Methode hab ichs außerhalb des Konstruktors gesetzt... danke dir. Nun reagiert mein code zwar auf den klick auf den tab, doch wie finde ich raus welcher tab angeklickt wurde?

das Problem ist jedesmal wenn ich den 2. oder 3. tab anklicke verbreitert sich das fenster:

Code:
jtp.addChangeListener(new ChangeListener() {
          // This method is called whenever the selected tab changes
          public void stateChanged(ChangeEvent evt) {
              
        	  JTabbedPane pane = (JTabbedPane)evt.getSource();
                            // Get current tab
              if( pane.getSelectedIndex() == 1 ) System.out.println("Der 1. Tab wurde gewählt");
              myWindow.setBounds(myWindow.getX(),myWindow.getY() , 800 , myWindow.getHeight());              
          }
      });

Ist index == 1 nicht das 2. fenster ? fängt das net bei 0 an zu zählen? sprich der 1. tab links ist index 0 ?
 
N

Narret se mer

Gast
wenn ich diesen code in die stateChange methode einfüge:

Code:
if(pane.indexOfComponent(RP)== 0)System.out.println("Der 1. Tab wurde gewählt");
 if(pane.indexOfComponent(SP)== 1)System.out.println("Der 2. Tab wurde gewählt");
 if(pane.indexOfComponent(TP)== 2)System.out.println("Der 3. Tab wurde gewählt");

bekomme ich immer eine dreifache Ausgabe:

Der 1. Tab wurde gewählt
Der 2. Tab wurde gewählt
Der 3. Tab wurde gewählt


obwohl ic nur 1 MAL irgendeinen Tab anklickte ???:L
 

Ariol

Top Contributor
Schreib mal statt:
Code:
if(pane.indexOfComponent(RP)== 0)System.out.println("Der 1. Tab wurde gewählt");
if(pane.indexOfComponent(SP)== 1)System.out.println("Der 2. Tab wurde gewählt");
if(pane.indexOfComponent(TP)== 2)System.out.println("Der 3. Tab wurde gewählt");
das hier
Code:
System.out.println("Der " + (pane.getSelectedIndex()+1) + ". Tab wurde gewählt");
 
N

Narretei is vorbei

Gast
ok so gehts:
Code:
jtp.addChangeListener(new ChangeListener() {
          
          public void stateChanged(ChangeEvent evt) {
              
        	  JTabbedPane pane = (JTabbedPane)evt.getSource();           
               
               if(pane.indexOfComponent(RP)== 0)
               {
            	   System.out.println("Der " + (pane.getSelectedIndex()+1) + ". Tab wurde gewählt");
            	   myWindow.setBounds(myWindow.getX(),myWindow.getY() , 380 , myWindow.getHeight()); 
               } 
               
               if(pane.indexOfComponent(SP)== 1)
               {
            	   System.out.println("Der " + (pane.getSelectedIndex()+1) + ". Tab wurde gewählt"); 
            	   myWindow.setBounds(myWindow.getX(),myWindow.getY() , 800 , myWindow.getHeight());  
               }
               
               if(pane.indexOfComponent(TP)== 2)
               {
            	   System.out.println("Der " + (pane.getSelectedIndex()+1) + ". Tab wurde gewählt"); 
            	   myWindow.setBounds(myWindow.getX(),myWindow.getY() , 800 , myWindow.getHeight()); 
               }                          
          }
      });
Jetzt bekomme ich die richtige aus nur 2 Sachen stören bzw. wundern mich:

1. warum wird wenn ich auf einen Tab klicke die Textausgabe immer 3mal gemacht? z.B. so:

Der 1. Tab wurde gewählt
Der 1. Tab wurde gewählt
Der 1. Tab wurde gewählt
Der 2. Tab wurde gewählt
Der 2. Tab wurde gewählt
Der 2. Tab wurde gewählt
Der 3. Tab wurde gewählt
Der 3. Tab wurde gewählt
Der 3. Tab wurde gewählt

Wenn ich eine der Tabs anklicke möchte ich den JFrame vergrößern je nachdem welcher Tab geklickt ist mit unterschiedlicher Breite. Wenn ich z.B. den 2.tab anklicke soll der jframe eine breite von 800px haben. Das klappt auch gut doch wenn ich wieder den 1.Tab anklicke sollte das fenster wieder kleiner werden auf eine breite von 380, nur dann passiert nichts?

Weißt du warum Ariol?
 
N

Narretei is vorbei

Gast
if(pane.indexOfComponent(RP)== 0)
{
System.out.println("Der " + (pane.getSelectedIndex()+1) + ". Tab wurde gewählt");
myWindow.setBounds(myWindow.getX()-100,myWindow.getY() , 100 , myWindow.getHeight());
}

also ich habe noch die x-pos auf -100 geändert sprich man sollte meinen wenn ich auf den 1.tab klicke dann springt das fenster 100px nach links, das tuts auch doch EGAL was ich anklicke es springt immer nach links - HÄ ??? Wieso denn das ich habe doch 3 if Bedingungen... versteh ich jetzt net?!
 

Ariol

Top Contributor
Schreib's mal so:
Code:
jtp.addChangeListener(new ChangeListener()
		{
			// This method is called whenever the selected tab changes
			public void stateChanged(ChangeEvent evt)
			{				
				System.out.println("Der " + (jtp.getSelectedIndex() + 1) + ". Tab wurde gewählt");
				
				if (jtp.getSelectedComponent().equals(RP))
				{
					myWindow.setBounds(myWindow.getX(), myWindow.getY(), 380, myWindow.getHeight());
				}
				else if (jtp.getSelectedComponent().equals(SP))
				{
					System.out.println("Der " + (jtp.getSelectedIndex() + 1) + ". Tab wurde gewählt");
					myWindow.setBounds(myWindow.getX(), myWindow.getY(), 800, myWindow.getHeight());
				}

				else if (jtp.getSelectedComponent().equals(TP))
				{
					System.out.println("Der " + (jtp.getSelectedIndex() + 1) + ". Tab wurde gewählt");
					myWindow.setBounds(myWindow.getX(), myWindow.getY(), 800, myWindow.getHeight());
				}

			}
		});

Der Text erscheint jetzt jeweils 2Mal:
1. weil das alte Panel jetzt unselected ist
2. weil das neue Panel selected ist.
 
S

super danke dir :)

Gast
Ariol hat gesagt.:
Schreib's mal so:
Code:
jtp.addChangeListener(new ChangeListener()
		{
			// This method is called whenever the selected tab changes
			public void stateChanged(ChangeEvent evt)
			{				
				System.out.println("Der " + (jtp.getSelectedIndex() + 1) + ". Tab wurde gewählt");
				
				if (jtp.getSelectedComponent().equals(RP))
				{
					myWindow.setBounds(myWindow.getX(), myWindow.getY(), 380, myWindow.getHeight());
				}
				else if (jtp.getSelectedComponent().equals(SP))
				{
					System.out.println("Der " + (jtp.getSelectedIndex() + 1) + ". Tab wurde gewählt");
					myWindow.setBounds(myWindow.getX(), myWindow.getY(), 800, myWindow.getHeight());
				}

				else if (jtp.getSelectedComponent().equals(TP))
				{
					System.out.println("Der " + (jtp.getSelectedIndex() + 1) + ". Tab wurde gewählt");
					myWindow.setBounds(myWindow.getX(), myWindow.getY(), 800, myWindow.getHeight());
				}

			}
		});

Der Text erscheint jetzt jeweils 2Mal:
1. weil das alte Panel jetzt unselected ist
2. weil das neue Panel selected ist.

genau das getSelectedComponent wollte ich auch nehmen mit parameter z.B. TP gab aber ne fehlermeldung auf equals bin ich dann net gekommen... :D vielen dank dir! gute Nacht!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Fiedelbambu fxml onAction event Java Basics - Anfänger-Themen 7
T FXMl Event has not a Slot Java Basics - Anfänger-Themen 1
E Methoden Action Event wird nicht vollständig ausgeführt Java Basics - Anfänger-Themen 3
Tommy135 Event erstellen Java Basics - Anfänger-Themen 7
CptK Methoden Event bei gedrückter Maustaste immer wieder ausführen Java Basics - Anfänger-Themen 1
CptK Klassen Event bei gedrückter Maus immer wieder mit Pause ausführen Java Basics - Anfänger-Themen 2
topi WindowAdapter / Listener / Event Java Basics - Anfänger-Themen 4
L Event schmeißen Java Basics - Anfänger-Themen 1
F In Eclipse Haltepunkt bei Event setzen? Java Basics - Anfänger-Themen 1
T Übungsaufgabe Event Handling Java Basics - Anfänger-Themen 0
M Action Event auf Textfield legen Java Basics - Anfänger-Themen 18
V Button/Event wird nicht ausgeführt, was tun? Java Basics - Anfänger-Themen 2
J Keyboard Event auch ohne Fokus mitbekommen Java Basics - Anfänger-Themen 2
D Java Eclipse cannot be cast to java.awt.event.ItemListener Java Basics - Anfänger-Themen 3
IngoF Welches Event kommt wann? Java Basics - Anfänger-Themen 8
A Key Event - Abfrage von 2 gedrückten Tasten Java Basics - Anfänger-Themen 6
E Event gesucht Java Basics - Anfänger-Themen 1
G Button Event Java Basics - Anfänger-Themen 6
Thallius Hidden Feature über Key Event starten Java Basics - Anfänger-Themen 4
A Labels Inner JButton Event Erstellbar? Java Basics - Anfänger-Themen 3
F Erste Schritte Aktuelles Fenster durch Event schließen Java Basics - Anfänger-Themen 3
D Button action Event einblenden/ausblenden Java Basics - Anfänger-Themen 6
U Threadsafe Event-Handling Java Basics - Anfänger-Themen 2
C Klassen NullPointerException beim Event Handling in GUI Java Basics - Anfänger-Themen 8
P ActionListener Action Event Java Basics - Anfänger-Themen 5
J Erste Schritte import awt.* ;awt.event.*; Java Basics - Anfänger-Themen 3
T event und while-schleife Java Basics - Anfänger-Themen 26
L Null Pointer Exception bei Focus Event bei einem JTextField Java Basics - Anfänger-Themen 2
M Während event einen anderen event ausführen?? Java Basics - Anfänger-Themen 3
S Event aus anderer Klasse als Auslöser Java Basics - Anfänger-Themen 5
M Event erstellen Java Basics - Anfänger-Themen 6
B OOP Eigener Event-Listener erstellen Java Basics - Anfänger-Themen 4
D Eigenes Event beim TimeOut Java Basics - Anfänger-Themen 2
D Auf Event warten Java Basics - Anfänger-Themen 4
I AWS Event Notification Service Sample ausführen... Java Basics - Anfänger-Themen 7
M JList Event Java Basics - Anfänger-Themen 5
Houly while Schleife im ActionPerformed Event Java Basics - Anfänger-Themen 8
R eigenen Event schreiben Java Basics - Anfänger-Themen 16
S Kein Event bei Click auf JComboBox Java Basics - Anfänger-Themen 4
N paint methode statt Event-Handling-Methode Java Basics - Anfänger-Themen 3
Q Eigenes Event feuern Java Basics - Anfänger-Themen 5
H2SO3- dreieck, bild --> maus klick event. Wie gehts? Java Basics - Anfänger-Themen 10
R Event in eigener Klasse implementieren ? Java Basics - Anfänger-Themen 8
B Applet: Event-Handling-Methode in start- bzw. paint-Methode Java Basics - Anfänger-Themen 7
D Window resize Event ? Java Basics - Anfänger-Themen 5
D Bei Event soll Instanz sich selbst löschen Java Basics - Anfänger-Themen 4
D Event mit n-Button8s) von einem Panel Java Basics - Anfänger-Themen 9
GilbertGrape Eigenes Event? Java Basics - Anfänger-Themen 2
A Synchronisierung oder gibt es das onChange event? Java Basics - Anfänger-Themen 4
J Automatisch Button drücken/Event ausführen? Java Basics - Anfänger-Themen 6
G Button Action Event starten Java Basics - Anfänger-Themen 4
G Methode nicht im Event-Dispatcher-Thread starten? Java Basics - Anfänger-Themen 2
F Doppelklick-Event auf JTree Java Basics - Anfänger-Themen 5
A Wo/Wie Event Listener Java Basics - Anfänger-Themen 3
G Event Handler Java Basics - Anfänger-Themen 7
T button event Java Basics - Anfänger-Themen 3
P Raw-Key-Event Java Basics - Anfänger-Themen 4
Q ActionListener event bei JPanels Java Basics - Anfänger-Themen 5
J Event-Handling geht nicht Java Basics - Anfänger-Themen 6
G Button event problem Java Basics - Anfänger-Themen 24
B Eigenes Event schreiben Java Basics - Anfänger-Themen 7
D MouseLister und Identifikation des Event - Buttons Java Basics - Anfänger-Themen 4
G start-oder paint-Methode anstatt Event-Handling-Methode? Java Basics - Anfänger-Themen 3
T java.awt.event.WindowAdapter Java Basics - Anfänger-Themen 2
B Event-Actionlistener(Def) Java Basics - Anfänger-Themen 6
G GUI Event Handling Java Basics - Anfänger-Themen 5
M Event auslösen (unsinnig gestellt - ignorieren) Java Basics - Anfänger-Themen 4
M [SOLVED]Swing Event Management Java Basics - Anfänger-Themen 7
N Runtime.exec und Key event Java Basics - Anfänger-Themen 2
C Klasse muss auf Event in einer anderen Klasse reagieren Java Basics - Anfänger-Themen 7
G JTable - Event - MVC Java Basics - Anfänger-Themen 10
J Event-Hilfe Java Basics - Anfänger-Themen 4
T Event zu bestimmter Uhrzeit auslösen ? Java Basics - Anfänger-Themen 5
S MausKlickZähler - Event Problem Java Basics - Anfänger-Themen 2
M Kommunikation zwischen GUI und Event -Klasse Java Basics - Anfänger-Themen 3
C mouseDown (Event e, int x, int y) rechts oder linksklick ? Java Basics - Anfänger-Themen 10
D if (event.target instanceof TextField) Java Basics - Anfänger-Themen 2
Fiedelbambu Vererbung JTabbedPane vererben in der MainView Java Basics - Anfänger-Themen 0
R JTabbedPane Java Basics - Anfänger-Themen 9
C Tabs in JTabbedPane wechseln, wenn Tabs in eigenen Klassen sind Java Basics - Anfänger-Themen 2
S Verhalten von JTextField in einem JTabbedPane (Register) Java Basics - Anfänger-Themen 6
T Icon auf einem JTabbedPane? Java Basics - Anfänger-Themen 6
J Erste Schritte JTabbedPane sichtbar und unsichtbar Java Basics - Anfänger-Themen 9
B JTabbedPane größe der Tabs ändern Java Basics - Anfänger-Themen 6
R JTabbedPane - Farbe ändern Java Basics - Anfänger-Themen 4
S JTabbedPane jeder Tab in einer eigenen java Datei? Java Basics - Anfänger-Themen 3
I Netbeans - jTabbedPane Hintergrundfarbe ändern Java Basics - Anfänger-Themen 13
X JTable in JPanel in JTabbedPane mouseevent von jtable kommt nicht durch Java Basics - Anfänger-Themen 3
M JTabbedPane Java Basics - Anfänger-Themen 2
A JTable im JTabbedPane Java Basics - Anfänger-Themen 2
H JTabbedPane: Tab-Wechsel unterbinden ? Java Basics - Anfänger-Themen 6
Spin JTabbedPane Java Basics - Anfänger-Themen 10
Developer_X Jtabbedpane showPane(xpane)? Java Basics - Anfänger-Themen 2
F JTabbedPane auf Ereignisse reagieren Java Basics - Anfänger-Themen 6
H JTabbedPane wartet auf Eingabe Java Basics - Anfänger-Themen 3
G LAF JTabbedPane Java Basics - Anfänger-Themen 3
L JTabbedPane, richtige Übergabe von Tabs Java Basics - Anfänger-Themen 18
T Dynamischer JTabbedPane Probleme mit JTextArea Java Basics - Anfänger-Themen 2
C jTabbedPane JScrollPane und jPanel Java Basics - Anfänger-Themen 3
C jTabbedPane selektierten Tab markieren Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben