the super developer for Swing/AWT/JFC , come in please
I have a very simple program to test use method requestFocus()
my program is below:
////////////////////////////////////////////////////
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
class TextTestFrame extends JFrame implements FocusListener
{ public TextTestFrame()
{ setTitle("TextTest");
setSize(300, 200);
addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{ System.exit(0);
}
});
//addFocusEvent(this);
addFocusListener(this);
Container contentPane = getContentPane();
JPanel p = new JPanel();
hourField = new JTextField("12", 3);
p.add(hourField);
minuteField = new JTextField("00", 3);
//minuteField.requestFocus();
p.add(minuteField);
contentPane.add(p, "South");
}
public void focusLost(FocusEvent evt)
{
}
public void focusGained(FocusEvent evt)
{
minuteField.requestFocus();
}
private JTextField hourField;
private JTextField minuteField;
}
public class TextTest
{ public static void main(String[] args)
{ JFrame frame = new TextTestFrame();
frame.show();
}
}
//////////////////////////////
I only want when I run this program , the focus at minuteField . but it always focus at hourField .
What’s wrong with me ? how to do it ?
Please answer my question detailly!
Thanx!
问题点数:100、回复次数:6Top
1 楼drinkant(喝酒的蚂蚁)回复于 2002-04-18 15:26:39 得分 0
不敢确定的说:
你写的程序是要当有focus事件发生在你的frame上的时候,才强制把焦点给minuteButton,麻烦你在你的frame是点击一下鼠标试试, 看看焦点有没有转移过去, 呵呵呵, 自己写程序不知道自己的逻辑, 你是比较强
求助还全英文的,faint, 崇洋媚外Top
2 楼chinesealbert(chinesealbert)回复于 2002-04-18 15:51:05 得分 0
drinkant:
may be U R right , this is my last staw to do this thing , unfortunately , when i have clicked at frame before i ask question at this , the focus is not changes too.so i came here want someone to help me !
now ,i will put my a series of program for this question:
/////////////////////////////
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
class TextTestFrame extends JFrame //implements FocusListener
{ public TextTestFrame()
{ setTitle("TextTest");
setSize(300, 200);
addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{ System.exit(0);
}
});
//addFocusListener(this);
Container contentPane = getContentPane();
JPanel p = new JPanel();
hourField = new JTextField("12", 3);
p.add(hourField);
minuteField = new JTextField("00", 3);
p.add(minuteField);
minuteField.setVisible(true);
minuteField.transferFocus();
contentPane.add(p, "South");
}
/*public void focusLost(FocusEvent evt)
{
}
public void focusGained(FocusEvent evt)
{
minuteField.requestFocus();
}*/
private JTextField hourField;
private JTextField minuteField;
}
public class TextTest
{ public static void main(String[] args)
{ JFrame frame = new TextTestFrame();
frame.show();
}
}
//////////////////
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
class TextTestFrame extends JFrame //implements FocusListener
{ public TextTestFrame()
{ setTitle("TextTest");
setSize(300, 200);
addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{ System.exit(0);
}
});
//addFocusListener(this);
Container contentPane = getContentPane();
JPanel p = new JPanel();
hourField = new JTextField("12", 3);
p.add(hourField);
minuteField = new JTextField("00", 3);
p.add(minuteField);
minuteField.setVisible(true);
minuteField.requestFocus()
//minuteField.transferFocus();
contentPane.add(p, "South");
}
/*public void focusLost(FocusEvent evt)
{
}
public void focusGained(FocusEvent evt)
{
minuteField.requestFocus();
}*/
private JTextField hourField;
private JTextField minuteField;
}
public class TextTest
{ public static void main(String[] args)
{ JFrame frame = new TextTestFrame();
frame.show();
}
}
///////////////////////
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
class TextTestFrame extends JFrame //implements FocusListener
{ public TextTestFrame()
{ setTitle("TextTest");
setSize(300, 200);
addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{ System.exit(0);
}
});
//addFocusListener(this);
Container contentPane = getContentPane();
JPanel p = new JPanel();
hourField = new JTextField("12", 3);
p.add(hourField);
minuteField = new JTextField("00", 3);
p.add(minuteField);
//minuteField.setVisible(true);
minuteField.requestFocus()
//minuteField.transferFocus();
contentPane.add(p, "South");
}
/*public void focusLost(FocusEvent evt)
{
}
public void focusGained(FocusEvent evt)
{
minuteField.requestFocus();
}*/
private JTextField hourField;
private JTextField minuteField;
}
public class TextTest
{ public static void main(String[] args)
{ JFrame frame = new TextTestFrame();
frame.show();
}
}
///////////////////////
all of these program , no one is sucessful , who can tell me , what's wrong with me ?
Top
3 楼James_ZC(巫山剑圣)回复于 2002-04-18 16:51:27 得分 40
You can try it :
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
class TextTestFrame extends JFrame
{
private JTextField hourField;
private JTextField minuteField;
private NmFocusListener aFocusListener = new NmFocusListener() ;
public TextTestFrame()
{
setTitle("TextTest");
setSize(300, 200);
addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{ System.exit(0);
}
});
Container contentPane = getContentPane();
JPanel p = new JPanel();
hourField = new JTextField("12", 3);
hourField.addFocusListener(aFocusListener);
p.add(hourField);
minuteField = new JTextField("00", 3);
minuteField.addFocusListener(aFocusListener) ;
//minuteField.requestFocus();
p.add(minuteField);
contentPane.add(p, "South");
toFront();
}
class NmFocusListener extends FocusAdapter
{
public void focusGained(FocusEvent event)
{
minuteField.requestFocus();
}
}// of inner class NmFoucsListener
}
public class TextTest
{ public static void main(String[] args)
{ TextTestFrame frame = new TextTestFrame();
frame.show();
}
}
Top
4 楼drinkant(喝酒的蚂蚁)回复于 2002-04-18 17:09:11 得分 0
:)
一个最最最最无赖的办法: 模拟鼠标事件发送给那个buttonTop
5 楼drinkant(喝酒的蚂蚁)回复于 2002-04-18 17:18:47 得分 20
刚才看了一下awt,默认的焦点遍历顺序就是你的component的加入顺序
呵呵, 再try一下看看哈Top
6 楼James_ZC(巫山剑圣)回复于 2002-04-18 17:23:53 得分 40
The following code should meet ur request,pls try it:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
class TextTestFrame extends JFrame
{
private JTextField hourField;
private JTextField minuteField;
private NmFocusListener aFocusListener = new NmFocusListener() ;
private static int x = 0 ;
public TextTestFrame()
{
setTitle("TextTest");
setSize(300, 200);
addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{ System.exit(0);
}
});
Container contentPane = getContentPane();
JPanel p = new JPanel();
hourField = new JTextField("12", 3);
hourField.addFocusListener(aFocusListener);
p.add(hourField);
minuteField = new JTextField("00", 3);
minuteField.addFocusListener(aFocusListener) ;
p.add(minuteField);
contentPane.add(p, "South");
toFront();
}
class NmFocusListener extends FocusAdapter
{
public void focusGained(FocusEvent event)
{
if(x == 0)
{
minuteField.requestFocus();
x++ ;
}
}
}
}
public class TextTest
{ public static void main(String[] args)
{ TextTestFrame frame = new TextTestFrame();
frame.show();
}
}
Top




