Focus-Problem

Status
Nicht offen für weitere Antworten.

Kaladial

Bekanntes Mitglied
hi

hab da nen problem mit dem focus...

und zwar hab ich ein programm mit mehreren jpanels und ner menüleiste,
wenn ich ich nun in der menüleiste einen menüpunkt anklicke soll ein panel mit 2 feldern und nem button angezeigt werden...

und natürlich soll der focus schon auf dem ersten eingabefeld liegen ...

nur bekomm ich das eben net hin


wie kann man das machen?


thx für hilfe...

mfg kala
 
Code:
package testapp;

import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.CardLayout;
import java.awt.GridBagLayout;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JLabel;
import java.awt.GridBagConstraints;
import javax.swing.JTextField;
import java.awt.Rectangle;

public class testFocus extends JFrame {

	private static final long serialVersionUID = 1L;
	private JPanel jContentPane = null;
	private JPanel jPanel1 = null;
	private JPanel jPanel2 = null;
	private JMenuBar jJMenuBar = null;
	private JMenu jMenu = null;
	private JMenuItem jMenuItem = null;
	private JLabel jLabel = null;
	private JTextField jTextField = null;
	/**
	 * This is the default constructor
	 */
	public testFocus() {
		super();
		initialize();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		this.setSize(300, 200);
		this.setJMenuBar(getJJMenuBar());
		this.setContentPane(getJContentPane());
		this.setTitle("JFrame");
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			jContentPane = new JPanel();
			jContentPane.setLayout(new CardLayout());
			jContentPane.add(getJPanel1(), getJPanel1().getName());
			jContentPane.add(getJPanel2(), getJPanel2().getName());
		}
		return jContentPane;
	}

	/**
	 * This method initializes jPanel1	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getJPanel1() {
		if (jPanel1 == null) {
			jLabel = new JLabel();
			jLabel.setText("JLabel");
			jPanel1 = new JPanel();
			jPanel1.setLayout(new GridBagLayout());
			jPanel1.setName("jPanel1");
			jPanel1.add(jLabel, new GridBagConstraints());
		}
		return jPanel1;
	}

	/**
	 * This method initializes jPanel2	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getJPanel2() {
		if (jPanel2 == null) {
			jPanel2 = new JPanel();
			jPanel2.setLayout(null);
			jPanel2.setName("jPanel2");
			jPanel2.setVisible(false);
			jPanel2.add(getJTextField(), null);
		}
		return jPanel2;
	}

	/**
	 * This method initializes jJMenuBar	
	 * 	
	 * @return javax.swing.JMenuBar	
	 */
	private JMenuBar getJJMenuBar() {
		if (jJMenuBar == null) {
			jJMenuBar = new JMenuBar();
			jJMenuBar.add(getJMenu());
		}
		return jJMenuBar;
	}

	/**
	 * This method initializes jMenu	
	 * 	
	 * @return javax.swing.JMenu	
	 */
	private JMenu getJMenu() {
		if (jMenu == null) {
			jMenu = new JMenu();
			jMenu.setText("Datei");
			jMenu.add(getJMenuItem());
		}
		return jMenu;
	}

	/**
	 * This method initializes jMenuItem	
	 * 	
	 * @return javax.swing.JMenuItem	
	 */
	private JMenuItem getJMenuItem() {
		if (jMenuItem == null) {
			jMenuItem = new JMenuItem();
			jMenuItem.setText("Login");
			jMenuItem.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					jPanel1.setVisible(false);
					jPanel2.setVisible(true);
				}
			});
		}
		return jMenuItem;
	}

	/**
	 * This method initializes jTextField	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getJTextField() {
		if (jTextField == null) {
			jTextField = new JTextField();
			jTextField.setBounds(new Rectangle(69, 53, 166, 45));
		}
		return jTextField;
	}

}

^^ hab da ma eben fix nen test-programm zusammen gebastelt um die problematik zu verdeutlichen ....

hoffe das mir nu jemand helfen kann 🙂
mfg Kala
 
hmmm der andre hilft immer gern das weis ich aber seine programme zu verstehn is teilweise nicht einfach *ggg*

und da vmein problem nich so ganz das is wie deins is es da etwas schwerer das abzuleiten 🙂

von daher würd ich einfach bitten sich mal mein problem anzugucken ...
 
nur eine Zeile einfügen hat bei mir geklappt:
Code:
   /** 
    * This method initializes jMenuItem    
    *     
    * @return javax.swing.JMenuItem    
    */ 
   private JMenuItem getJMenuItem() { 
      if (jMenuItem == null) { 
         jMenuItem = new JMenuItem(); 
         jMenuItem.setText("Login"); 
         jMenuItem.addActionListener(new java.awt.event.ActionListener() { 
            public void actionPerformed(java.awt.event.ActionEvent e) { 
               jPanel1.setVisible(false); 
               jPanel2.setVisible(true);
               jTextField.requestFocus(true); //Die hier ist neu
            } 
         }); 
      } 
      return jMenuItem; 
   }

achja, und ein :
Code:
	public static void main(String args[]) {
		(new testFocus()).setVisible(true);
	}

🙂
 
so ok

nun mein 2. fall wo ich den focus net hinbekomm

also ähnliches programm wie eben nur diesesmal ist ein button dazu gekommen und wenn man diesen button drückt geht ein dialog auf der ein tabbedpane beinhaltet und auf dem 1. panel ist wieder ein textfield wo der focus rein soll

also hier der code

Code:
package testapp;

import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.CardLayout;
import java.awt.GridBagLayout;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JLabel;
import java.awt.GridBagConstraints;
import javax.swing.JTextField;
import java.awt.Rectangle;
import javax.swing.JButton;

public class testFocus extends JFrame {

	private static final long serialVersionUID = 1L;
	private JPanel jContentPane = null;
	private JPanel jPanel1 = null;
	private JPanel jPanel2 = null;
	private JMenuBar jJMenuBar = null;
	private JMenu jMenu = null;
	private JMenuItem jMenuItem = null;
	private JLabel jLabel = null;
	private JTextField jTextField = null;
	private JButton jButtontest = null;
	private JLabel jLabel1 = null;
	/**
	 * This is the default constructor
	 */
	public testFocus() {
		super();
		initialize();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		this.setSize(300, 200);
		this.setJMenuBar(getJJMenuBar());
		this.setContentPane(getJContentPane());
		this.setTitle("JFrame");
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			jContentPane = new JPanel();
			jContentPane.setLayout(new CardLayout());
			jContentPane.add(getJPanel1(), getJPanel1().getName());
			jContentPane.add(getJPanel2(), getJPanel2().getName());
		}
		return jContentPane;
	}

	/**
	 * This method initializes jPanel1	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getJPanel1() {
		if (jPanel1 == null) {
			jLabel = new JLabel();
			jLabel.setText("JLabel");
			jPanel1 = new JPanel();
			jPanel1.setLayout(new GridBagLayout());
			jPanel1.setName("jPanel1");
			jPanel1.add(jLabel, new GridBagConstraints());
		}
		return jPanel1;
	}

	/**
	 * This method initializes jPanel2	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getJPanel2() {
		if (jPanel2 == null) {
			jLabel1 = new JLabel();
			jLabel1.setBounds(new Rectangle(81, 12, 151, 23));
			jLabel1.setText("JLabel");
			jPanel2 = new JPanel();
			jPanel2.setLayout(null);
			jPanel2.setName("jPanel2");
			jPanel2.setVisible(false);
			jPanel2.add(getJTextField(), null);
			jPanel2.add(getJButtontest(), null);
			jPanel2.add(jLabel1, null);
		}
		return jPanel2;
	}

	/**
	 * This method initializes jJMenuBar	
	 * 	
	 * @return javax.swing.JMenuBar	
	 */
	private JMenuBar getJJMenuBar() {
		if (jJMenuBar == null) {
			jJMenuBar = new JMenuBar();
			jJMenuBar.add(getJMenu());
		}
		return jJMenuBar;
	}

	/**
	 * This method initializes jMenu	
	 * 	
	 * @return javax.swing.JMenu	
	 */
	private JMenu getJMenu() {
		if (jMenu == null) {
			jMenu = new JMenu();
			jMenu.setText("Datei");
			jMenu.add(getJMenuItem());
		}
		return jMenu;
	}

	/**
	 * This method initializes jMenuItem	
	 * 	
	 * @return javax.swing.JMenuItem	
	 */
	private JMenuItem getJMenuItem() {
		if (jMenuItem == null) {
			jMenuItem = new JMenuItem();
			jMenuItem.setText("Login");
			jMenuItem.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					jPanel1.setVisible(false);
					jPanel2.setVisible(true);
					jTextField.requestFocus(true); 
				}
			});
		}
		return jMenuItem;
	}

	/**
	 * This method initializes jTextField	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getJTextField() {
		if (jTextField == null) {
			jTextField = new JTextField();
			jTextField.setBounds(new Rectangle(69, 53, 166, 45));
			jTextField.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
				}
			});
		}
		return jTextField;
	}

	/**
	 * This method initializes jButtontest	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButtontest() {
		if (jButtontest == null) {
			jButtontest = new JButton();
			jButtontest.setText("test");
			jButtontest.setBounds(new Rectangle(76, 112, 146, 24));
			jButtontest.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					test();
				}
			});
		}
		return jButtontest;
	}
	
	private void test(){
		DlgTestFocus dlg = new DlgTestFocus(this);
		dlg.setTitle("Scanner suchen");
		dlg.setModal(true);
		dlg.setVisible(true);
	}

}

Code:
package testapp;

import javax.swing.JPanel;
import java.awt.Frame;
import java.awt.BorderLayout;
import javax.swing.JDialog;
import javax.swing.JTextField;
import java.awt.Rectangle;
import javax.swing.JTabbedPane;
import java.awt.GridBagLayout;

public class DlgTestFocus extends JDialog {

	private static final long serialVersionUID = 1L;
	private JPanel jContentPane = null;
	private JTabbedPane jTabbedPane = null;
	private JPanel jPanel1 = null;
	private JPanel jPanel2 = null;
	private JTextField jTextField = null;
	/**
	 * @param owner
	 */
	public DlgTestFocus(Frame owner) {
		super(owner);
		initialize();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		this.setSize(300, 200);
		this.setContentPane(getJContentPane());
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			jContentPane = new JPanel();
			jContentPane.setLayout(new BorderLayout());
			jContentPane.add(getJTabbedPane(), BorderLayout.CENTER);
		}
		return jContentPane;
	}

	/**
	 * This method initializes jTabbedPane	
	 * 	
	 * @return javax.swing.JTabbedPane	
	 */
	private JTabbedPane getJTabbedPane() {
		if (jTabbedPane == null) {
			jTabbedPane = new JTabbedPane();
			jTabbedPane.addTab(null, null, getJPanel1(), null);
			jTabbedPane.addTab(null, null, getJPanel2(), null);
		}
		return jTabbedPane;
	}

	/**
	 * This method initializes jPanel1	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getJPanel1() {
		if (jPanel1 == null) {
			jPanel1 = new JPanel();
			jPanel1.setLayout(null);
			jPanel1.add(getJTextField(), null);
		}
		return jPanel1;
	}

	/**
	 * This method initializes jPanel2	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getJPanel2() {
		if (jPanel2 == null) {
			jPanel2 = new JPanel();
			jPanel2.setLayout(new GridBagLayout());
		}
		return jPanel2;
	}

	/**
	 * This method initializes jTextField	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getJTextField() {
		if (jTextField == null) {
			jTextField = new JTextField();
			jTextField.setBounds(new Rectangle(49, 56, 139, 33));
		}
		return jTextField;
	}

}
 
Bin ich auch überfragt, ich hätte auf :
Code:
private void test(){ 	   
    DlgTestFocus  dlg = new DlgTestFocus(f);
    dlg.setTitle("Scanner suchen"); 
    dlg.setModal(true); 
    dlg.setVisible(true); 
    dlg.getTextfield().requestFocus(true);

// oder auf:	   
//    final testFocus f=this;
//    SwingUtilities.invokeLater(new Runnable(){
//        public void run(){
//            DlgTestFocus  dlg = new DlgTestFocus(f);
//            dlg.setTitle("Scanner suchen"); 
//            dlg.setModal(true); 
//            dlg.setVisible(true); 
//            dlg.getTextfield().requestFocus(true);
//        }
//    });
}

getippt, geht aber beides nicht :-/ Kann aber nicht lang dauern, bei dem KSKB wird sich sicher bald noch jemand anders die Mühe machen 🙂
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben