先把JInternalFrame setSelected
再对JText setFocus

解决方案 »

  1.   

    我发现有的时候就是对JTextField使用了方法requestFocus(),也不能得到想要的焦点,尤其是对于JTextField不处于界面的第一个位置的时候,
    譬如:界面中
    JLabel1 JTextField1
    JLabel2 JTextField2
    此时,JTextField1可以自动获得焦点,但是要想将焦点设到JTextField2,光使用requestFocus()方法有时就是没法得到想要的,不知大家遇到没有?
    尤其对于子对话框的情况,难道必须用脚本实现么?
    请高人不吝赐教
      

  2.   

    当 JInternalFrame 弹出来的时候,
    internalFrameOpened(InternalFrameEvent e)
    此事件并没有发生。
    要使用 setSelected 方法,使 
    internalFrameOpened(InternalFrameEvent e)
    此事件发生,但由于使用Menu这种方式
    弹出 JInternalFrame 窗口,setSelected() 方法引用不了。
    不知道怎么解决。
      

  3.   

    必须在JInternalFrame的Activate之后,setSelected,
    再requestFocus
      

  4.   

    有一个另类的做法。当程序init完成以后,在EventQueue中模拟一个在JTextField中的点击事件
      

  5.   

    这个东西以前有人问过我,在JInternalFrame的Activate之后,
    setSelected, 再requestFocus 就行,很简单
      

  6.   

    回复DanielYWoo(绿色毒汁)
    是setSelected, 再requestFocus 就行,
    但setSelected()方法引用不了。
      

  7.   

    有两类,一个类是Menu,一个类是JInternalFrame.
    当你单击Menu类的一个MenuItem,就创建以JInternalFrame的一个对象,
    那么setSelected()方法就既不能在JInternalFrame的对象调用,
    也不能在Menu对象中调用。
      

  8.   

    不妨告诉你一个简单的:JTextField.setText("");OK.
      

  9.   

    这是我以前回复别人用的例子,
    这个例子中,你点击open,打开两个新窗口
    程序中用if1.setSelected(true);来使窗口1激活
    再用txt.requestFocus();来让文本框获得焦点如果忘了先激活窗口1,就设窗口1上的文本矿焦点,
    你会看到一个有意思的bug,窗口2的Title Bar是蓝色的,
    表示当前活动窗口,窗口2的Title Bar是灰色的,但是,
    窗口2的JTextField却可以接受用户输入,呵呵switch1和switch2两个按钮可以切换窗口import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    class QQQ extends JFrame
    {
    JDesktopPane desk = new JDesktopPane();
    JInternalFrame if1 = new JInternalFrame();
    JInternalFrame if2 = new JInternalFrame();
    JButton bt1 = new JButton("Switch 1");
    JButton bt2 = new JButton("Switch 2");
    JButton btOpen = new JButton("Open");
    JTextField txt = new JTextField("I got focus!"); QQQ()
    {
    JPanel temp = new JPanel();
    temp.add(bt1);
    temp.add(bt2);
    temp.add(btOpen);
    getContentPane().add(temp, BorderLayout.NORTH);
    getContentPane().add(desk, BorderLayout.CENTER);
    desk.add(if1);
    desk.add(if2);
    if1.getContentPane().add(txt, BorderLayout.NORTH);
    if1.reshape(10,10,100,100);
    if2.reshape(30,30,100,100);
    bt1.addActionListener(new MyListener());
    bt2.addActionListener(new MyListener());
    btOpen.addActionListener(new MyListener());
    setBounds(100,100,400,400);
    show();
    } public static void main(String[] args) 
    {
    QQQ q = new QQQ();
    }
    class MyListener implements ActionListener
    {
    public void actionPerformed(ActionEvent e)
    {
    try
    {
    if(e.getSource()==bt1)
    if1.setSelected(true);
    else if(e.getSource()==bt2)
    if2.setSelected(true);
    else{
    if1.setVisible(true);
    if2.setVisible(true);
    if1.setSelected(true);
    txt.requestFocus();  
    }
    }
    catch (Exception ex)
    {
    } }
    };
    }