Ahoi (ich stell mal wieder ne Frage )
Gegeben ist der Code hier:
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
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