Swing JTabbedPane Focus von Komponenten außerhalb

Status
Nicht offen für weitere Antworten.

thE_29

Top Contributor
Ahoi (ich stell mal wieder ne Frage ;))

Gegeben ist der Code hier:
Java:
  private void fuckinTabbedPane()
  {
    JFrame frame = new JFrame();
    frame.getContentPane().setLayout(null);
    final JTabbedPane paneSux = new JTabbedPane();
    paneSux.addTab("Tab", new JButton("HIT ME BABY"));
    paneSux.addTab("Another Tab", new JButton("ONE MORE TIME!"));    
    paneSux.addChangeListener(new ChangeListener() {
      public void stateChanged(ChangeEvent e)
      {
        System.out.println("CHANGED TAB: " + e + " F: " +     DefaultFocusManager.getCurrentManager().getFocusOwner());
      }
    });
    JPanel panel = new JPanel();
    panel.setLayout(null);
    JTextField field = new JTextField();
    field.addFocusListener(new FocusAdapter()
    {
      public void focusGained(FocusEvent e)
      {
        System.out.println("FOCUS GAINED!");
      }
      
      public void focusLost(FocusEvent e)
      {
        System.out.println("FOCUS LOST!");
      }
    });
    field.setBounds(0,0,150,25);
    panel.add(field);
    panel.setBounds(10,10, 200,50);
    panel.setBackground(Color.RED);
    frame.getContentPane().add(panel);
    paneSux.setBounds(10,100, 200, 70);
    frame.getContentPane().add(paneSux);
    frame.setSize(300,300);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    frame.setLocationRelativeTo(null);
    frame.setVisible(true);
  }

Wenn man in das Textfield klickt und der Cursor dort steht und dann bei den TabbedPanes (einmal auf den gleichen Tab) der Cursor trotzdem im Textfeld bleibt und der FocusListener auch nicht aufgerufen wird.
Klickt man das 2temal auf einen Tab, so funktioniert das ganze...

Problem bei mir ist ja, dass ich eine Komponente (Datum von bis) das bei allen Tabs auch dabei sein soll (aber nicht immer extra) und beim Klick auf den Tab, werte ich das Datum aus und rechne damit.
Wenn ich jetzt nicht explizit auf ENTER drücke (mein Datumsfeld übernimmt nur bei Enter oder eben FocusLost) dann rechnet der die ganze Zeit mit dem alten Wert.


Warum hat die Komponente noch immer den Focus? Und wie kriege ich dieses Verhalten weg?

mfg
 

Ebenius

Top Contributor
Das BasicTabbedPaneUI ist der Ansicht, dass es nur den Focus wechseln möchte, wenn man auf den bereits selektierten Tab klickt. Siehe BasicTabbedPane.UI (bei Java 6 ~Zeile 3.600):
Java:
public void mousePressed(MouseEvent e) {
  if (!tabPane.isEnabled()) {
    return;
  }
  int tabIndex = tabForCoordinate(tabPane, e.getX(), e.getY());
  if (tabIndex >= 0 && tabPane.isEnabledAt(tabIndex)) {
    if (tabIndex != tabPane.getSelectedIndex()) {
      // Clicking on unselected tab, change selection, do NOT
      // request focus.
      // This will trigger the focusIndex to change by way
      // of stateChanged.
      tabPane.setSelectedIndex(tabIndex);
    } else if (tabPane.isRequestFocusEnabled()) {
      // Clicking on selected tab, try and give the tabbedpane
      // focus. Repaint will occur in focusGained.
      tabPane.requestFocus();
    }
  }
}
Du könntest doch explizit auf den Wechsel des Tabs hören, um Deine Daten neu zu berechnen.

Ebenius
 

thE_29

Top Contributor
Das Textfeld (im richtigen Programm ein Texteditor) übernimmt den Wert aber nur bei ENTER oder eben FocusLost!
FoucusLost wird ja nicht aufgerufen..
 

Ebenius

Top Contributor
Was für ein TextFeld (oder Editor) ist das? JEditorPane, JTextPane, JFormattedTextField, JSpinner, ...?

Ebenius
 

thE_29

Top Contributor
Nö, was selbst gebautes ;) Das macht eine Überprüfung ob das Datum auch richtig ist oder man einen Blödsinn eingegeben hat.
Dadurch das die Prüfung halt nicht die ganze Zeit gemacht werden sollte, wurde auf ENTER und FocusLost reagiert.
 

Ebenius

Top Contributor
Hast Du einen besonderen Grund, nicht das JFormattedTextField zu benutzen? Dem würdest Du dann im ChangeListener einfach commitEdit() sagen...

Ebenius
 

thE_29

Top Contributor
Jo, weil das ne alte Komponente ist und die sonst eigentlich recht gut funktioniert ;)

Außerdem gings mir halt auch darum, zu zeigen, dass da was mit dem Fokuslistener nicht passt. Oder bei der TabbedPaneUI. Weil wenn ich im changeListener TabbedPane.requestFocus sage, dann wird alles so aufgerufen:)
 

Ebenius

Top Contributor
Außerdem gings mir halt auch darum, zu zeigen, dass da was mit dem Fokuslistener nicht passt. Oder bei der TabbedPaneUI. Weil wenn ich im changeListener TabbedPane.requestFocus sage, dann wird alles so aufgerufen:)
Da steckt Absicht dahinter. Es ist ja nicht so, dass die Events nicht gefeuert würden; der Fokus wechselt einfach nicht. Warum das als gut befunden wird, weiß ich nicht. :)

Ebenius
 

thE_29

Top Contributor
Naja, wenn du aber 2mal auf den gleichen Tab klickst, dann wechselt der Fokus ;)

Und sobald das TabbedPane einmal den Fokus hat, bleibts auch brav drauf :)
 

Ebenius

Top Contributor
Naja, wenn du aber 2mal auf den gleichen Tab klickst, dann wechselt der Fokus ;)

Und sobald das TabbedPane einmal den Fokus hat, bleibts auch brav drauf :)
Ist mir bekannt. Aber laut Code-Auszug oben trotzdem Absicht. Der Fokus wird nur gewechselt wenn man auf den selektierten Tab-Handler klickt. Bei jedem anderen nicht. Warum auch immer. :bahnhof:

Ebenius
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
V JTabbedPane - keine "Focus"-Box auf selektiertem T AWT, Swing, JavaFX & SWT 2
G JTabbedPane, Focus, ChangeListener AWT, Swing, JavaFX & SWT 1
BabySuna darstellungsprobleme mit JTabbedPane und GridBagLayout AWT, Swing, JavaFX & SWT 8
I JTabbedPane mit DnD, [x]-Schaltfläche, [+]-Schaltfläche usw. AWT, Swing, JavaFX & SWT 1
D JScrollPane in JTabbedPane AWT, Swing, JavaFX & SWT 3
D Kein Icon beim JTabbedPane AWT, Swing, JavaFX & SWT 1
B JTabbedPane Tabs anordnen AWT, Swing, JavaFX & SWT 2
D JTabbedPane GUI Experimente AWT, Swing, JavaFX & SWT 4
N JLabel in JTabbedPane verschieben AWT, Swing, JavaFX & SWT 2
U JScrollPane -> JTabbedPane u.A. AWT, Swing, JavaFX & SWT 3
L JTabbedPane mit for Schleife aufbauen AWT, Swing, JavaFX & SWT 4
J JTabbedPane Vollbild wenn Tabwechsel AWT, Swing, JavaFX & SWT 1
B StateChangeListener auf JTabbedPane AWT, Swing, JavaFX & SWT 5
F jTabbedPane Tabwechsel deaktivieren AWT, Swing, JavaFX & SWT 2
J JTabbedPane: close Button Problem AWT, Swing, JavaFX & SWT 2
J JTabbedPane: table in new tab: tooltip benutzt die column-widths von table in erstem geöffneten tab AWT, Swing, JavaFX & SWT 17
M JTabbedPane verändern mit Nimbus Look and Feel AWT, Swing, JavaFX & SWT 1
F JTabbedPane bestimmten Tab ansprechen AWT, Swing, JavaFX & SWT 13
F JTabbedPane mit Button zum Hinzufügen eines neuen Tabs AWT, Swing, JavaFX & SWT 6
BRoll JTabbedPane setTitleAt OutOfBoundsExc AWT, Swing, JavaFX & SWT 4
K JTabbedPane Tab Markierung / Selektion AWT, Swing, JavaFX & SWT 4
B Custom JTabbedPane-Tab-Design AWT, Swing, JavaFX & SWT 2
L JTabbedPane Closebutton integrieren AWT, Swing, JavaFX & SWT 6
J JTabbedPane Grafik unterhalb der Tabs AWT, Swing, JavaFX & SWT 3
H Swing JTabbedPane: Zusätzliche Buttons neben den Tabs AWT, Swing, JavaFX & SWT 7
V JTabbedPane Eingefügte Labels verschoben AWT, Swing, JavaFX & SWT 2
M Swing JTabbedPane: Tab-Elemente anpassen AWT, Swing, JavaFX & SWT 3
S Swing JTabbedPane: Nur nach ButtonClick und nicht nach Click auf Tab ins nächste Tab wechseln AWT, Swing, JavaFX & SWT 2
P JTabbedPane per Menuitem erstellen AWT, Swing, JavaFX & SWT 20
K Swing JTabbedPane wird nicht angezeigt AWT, Swing, JavaFX & SWT 19
B Swing JTabbedPane in JApplet -> Reiter bei Aktualisation mehrmals zu sehen AWT, Swing, JavaFX & SWT 3
M JTabbedPane -> setSelectedIndex funzt nicht AWT, Swing, JavaFX & SWT 3
D Bestimmtes JPanel innerhalb eines JTabbedPane ansprechen AWT, Swing, JavaFX & SWT 2
M jtabbedpane aktivieren/deaktivieren AWT, Swing, JavaFX & SWT 13
J Swing Letzten Tab einer JTabbedPane ermitteln AWT, Swing, JavaFX & SWT 6
T JTabbedPane - neuen Tab zwischen zwei anderen Tabs hinzufügen AWT, Swing, JavaFX & SWT 2
B Hilfe zu JTable und JTabbedPane AWT, Swing, JavaFX & SWT 18
hdi LookAndFeel Nimbus BUG mit JTabbedPane?! AWT, Swing, JavaFX & SWT 5
hdi Swing Problem mit JTabbedPane AWT, Swing, JavaFX & SWT 2
A LookAndFeel Rollover Effekt bei JTabbedPane deaktivieren (Nimbus) AWT, Swing, JavaFX & SWT 8
T Inhalt von einem Tab an JTabbedPane größe ausrichten? AWT, Swing, JavaFX & SWT 2
S JTabbedPane Problem AWT, Swing, JavaFX & SWT 3
S JTabbedPane AWT, Swing, JavaFX & SWT 4
D JTabbedPane mit Eventlistener versehen? AWT, Swing, JavaFX & SWT 9
M Swing JTabbedPane Panels deaktivieren AWT, Swing, JavaFX & SWT 2
K JTabbedPane setName() für jedes Tab AWT, Swing, JavaFX & SWT 2
G JTabbedPane - Länge der Reiter beeinflussen? AWT, Swing, JavaFX & SWT 9
G Swing JTabbedPane Was für ein Border wird da um die Tabs gezeichnet? AWT, Swing, JavaFX & SWT 6
S Swing Komponentengröße in JTabbedPane AWT, Swing, JavaFX & SWT 7
M Ein Tab eine JTabbedPane durch Button Druck öffen AWT, Swing, JavaFX & SWT 2
Y LookAndFeel JTabbedPane: Tab-Farbe mit Nimbus setzen AWT, Swing, JavaFX & SWT 3
M CloseButton bei JTabbedPane AWT, Swing, JavaFX & SWT 4
P Swing JTabbedPane mit JButton einen anderen Tab anzeigen AWT, Swing, JavaFX & SWT 9
D JTabbedPane zentrieren AWT, Swing, JavaFX & SWT 2
S Swing JTabbedPane: Inhalt soll oben links anfangen AWT, Swing, JavaFX & SWT 6
Mike90 JTabbedPane Größe anpassen AWT, Swing, JavaFX & SWT 17
F JTabbedPane Reiter breite AWT, Swing, JavaFX & SWT 4
B JTabbedPane mit Enumeration dynamisch füllen AWT, Swing, JavaFX & SWT 5
D Swing Tab in JTabbedPane AWT, Swing, JavaFX & SWT 5
A JFrame > JTabbedPane > JPanel > addKeyListener AWT, Swing, JavaFX & SWT 18
D JTabbedPane - Farbe ändern im Bereich hinter den Reitern AWT, Swing, JavaFX & SWT 2
M JTabbedPane - Tab auslesen AWT, Swing, JavaFX & SWT 2
H Swing Problem mit JTabbedPane AWT, Swing, JavaFX & SWT 9
D jtabbedpane Event VOR tab-Wechsel AWT, Swing, JavaFX & SWT 3
S Border von JTabbedpane-Tab? AWT, Swing, JavaFX & SWT 3
M JTabbedPane Docable? AWT, Swing, JavaFX & SWT 3
L Swing JTabbedPane - Index vom Tab AWT, Swing, JavaFX & SWT 3
D Swing JTabbedPane, TabComponent & Popup AWT, Swing, JavaFX & SWT 4
F Borders von JTabbedPane und JScrollPane AWT, Swing, JavaFX & SWT 5
W JTabbedPane Größe anpassen AWT, Swing, JavaFX & SWT 4
G Swing JTabbedPane vergrößern AWT, Swing, JavaFX & SWT 2
H Swing Register (jTabbedPane) dynamisch hinzufügen? AWT, Swing, JavaFX & SWT 7
D Tabs von JTabbedPane stylen AWT, Swing, JavaFX & SWT 6
U JTabbedPane: Layout-Probleme bei addTab zur Laufzeit AWT, Swing, JavaFX & SWT 2
1 JTabbedPane Tab ausdehnen AWT, Swing, JavaFX & SWT 3
F Swing JTabbedPane: Zur Laufzeit die Tabreihenfolge ändern AWT, Swing, JavaFX & SWT 2
M Elemente in JTabbedPane platzieren AWT, Swing, JavaFX & SWT 7
B Swing JFormattedTextField auf mehreren JPanels in einer JTabbedPane AWT, Swing, JavaFX & SWT 3
K LookAndFeel JTabbedPane mit Icon und CloseButton AWT, Swing, JavaFX & SWT 2
D Swing Probleme bei mit JTabbedPane.getChildren() AWT, Swing, JavaFX & SWT 4
I Swing Randnutzung bei JTabbedPane.LEFT AWT, Swing, JavaFX & SWT 2
ABstraCT JTabbedPane - click wird nicht immer ausgeführt ! AWT, Swing, JavaFX & SWT 10
P JTabbedPane und fill? AWT, Swing, JavaFX & SWT 2
D Swing mehrere JTable in separaten Tabs einer JTabbedPane AWT, Swing, JavaFX & SWT 2
G JTabbedPane transparent AWT, Swing, JavaFX & SWT 2
S Swing JTabbedPane: Resize des JFrame bei Tab wechsel AWT, Swing, JavaFX & SWT 8
S Scrollbar in einem JTabbedPane AWT, Swing, JavaFX & SWT 4
A Schriftfarbe von jTabbedPane und Button Ändern AWT, Swing, JavaFX & SWT 7
R JTabbedPane Selektion verfolgen? AWT, Swing, JavaFX & SWT 2
byte JTabbedPane - Insets entfernen AWT, Swing, JavaFX & SWT 7
S JTabbedPane child setBounds AWT, Swing, JavaFX & SWT 4
J jTabbedPane mit jPanel füllen AWT, Swing, JavaFX & SWT 14
A JTable im JTabbedPane -> Überschriften werden nicht angez AWT, Swing, JavaFX & SWT 2
V Extended JTabbedPane AWT, Swing, JavaFX & SWT 7
G JTabbedPane wird groesser wenn man anderen Tab auswaehlt. AWT, Swing, JavaFX & SWT 2
A JTabbedPane Tabwechsel rausfinden AWT, Swing, JavaFX & SWT 2
O JTabbedPane - Selected Color? AWT, Swing, JavaFX & SWT 1
T Wie aktualisiere ich die Contents einer JTabbedPane? AWT, Swing, JavaFX & SWT 3
G JTabbedPane zentiert alles AWT, Swing, JavaFX & SWT 3
P Schließen-Button bei JTabbedPane? AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben