Java 关注JTextField的问题

Java 关注JTextField的问题,java,swing,Java,Swing,我有两个问题,请记住,我是一个java新手 1. 我有一个使用JFrame创建GUI的类。 JFrame有2个面板,我使用JSplitPane添加了它们 问题是我可以设法将焦点设置在所需的JPanel上,但我希望将焦点设置在该面板中的特定JTextField上 这是创建框架的代码 //Create JFrame JFrame frame = new JFrame("Testing Frames"); frame.setLocation(100,100); frame.setDefaultClos

我有两个问题,请记住,我是一个java新手 1. 我有一个使用JFrame创建GUI的类。 JFrame有2个面板,我使用JSplitPane添加了它们

问题是我可以设法将焦点设置在所需的JPanel上,但我希望将焦点设置在该面板中的特定JTextField上

这是创建框架的代码

//Create JFrame
JFrame frame = new JFrame("Testing Frames");
frame.setLocation(100,100);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel p1=new JPanel();
p1.add(new First_Panel());
p1.setBackground(Color.RED);
JPanel p2=new JPanel();
p2.add(new Second_Panel());
p2.setBackground(Color.BLUE);

//Create Split JPanel
JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, p1, p2 );
splitPane.setOneTouchExpandable(true);
splitPane.setDividerSize(20);

//Pack Frame and show
frame.add(splitPane);
frame.setMinimumSize(new Dimension(1500,600));
frame.pack();
p1.requestFocus();
frame.setVisible(true);
二,。 我关注的另一个问题是,在第一个面板中,我有一个JTextField,它以部分当前日期开始/年月日 当我通过JTextfields进行tab并到达该特定字段时,它会在yyyy之后开始写入, 如何设置当我标记到这个JTextField时,它将从正确的点开始

提前感谢:D

编辑: 我为一个JPanel类添加了代码

我删除了大部分代码,只留下了与问题相关的部分

public class First_Panel extends JPanel {

//Load Frame Components
JTextField driver_name=new JTextField(10);
JTextField date=new JTextField(10);


    public First_Panel() throws ClassNotFoundException, SQLException {
        super(new MigLayout("", "[grow][grow][grow][center][grow][grow][grow]", "[][][]")); 

        //Date Format
        DateFormat dateFormat = new SimpleDateFormat("/MM/yyyy");



        //Set Date Automatically to Date Field
        date.setFont(font);
        Calendar cal = Calendar.getInstance();
        date.setText(dateFormat.format(cal.getTime()));

        //Frame Layout Properties



        //Third Column
        add(driver_name, "cell 0 2,growx");
        driver_name.setColumns(10);
        add(date, "cell 2 2,growx");
        date.setColumns(10);    




        send.addActionListener(new ActionListener() {   
            @Override
            public void actionPerformed(ActionEvent e) {


            try {
                dn=driver_name.getText();

                 SimpleDateFormat originalFormat = new SimpleDateFormat("dd/MM/yyyy");
                 SimpleDateFormat targetFormat = new SimpleDateFormat("yyyy/MM/dd");
                   try {
                     odate = originalFormat.parse(date.getText());
                     ndate=(targetFormat.format(odate));

                    } catch (ParseException ex) {

                       }
重点应放在驱动程序名称JTextField上,以及JTextField以/MM/yyyy开始的日期,并与第二个问题相关

public class First_Panel extends JPanel {

//Load Frame Components
JTextField driver_name=new JTextField(10);
JTextField date=new JTextField(10);


    public First_Panel() throws ClassNotFoundException, SQLException {
        super(new MigLayout("", "[grow][grow][grow][center][grow][grow][grow]", "[][][]")); 

        //Date Format
        DateFormat dateFormat = new SimpleDateFormat("/MM/yyyy");



        //Set Date Automatically to Date Field
        date.setFont(font);
        Calendar cal = Calendar.getInstance();
        date.setText(dateFormat.format(cal.getTime()));

        //Frame Layout Properties



        //Third Column
        add(driver_name, "cell 0 2,growx");
        driver_name.setColumns(10);
        add(date, "cell 2 2,growx");
        date.setColumns(10);    




        send.addActionListener(new ActionListener() {   
            @Override
            public void actionPerformed(ActionEvent e) {


            try {
                dn=driver_name.getText();

                 SimpleDateFormat originalFormat = new SimpleDateFormat("dd/MM/yyyy");
                 SimpleDateFormat targetFormat = new SimpleDateFormat("yyyy/MM/dd");
                   try {
                     odate = originalFormat.parse(date.getText());
                     ndate=(targetFormat.format(odate));

                    } catch (ParseException ex) {

                       }
但是我想把焦点放在这个面板中一个特定的JTextField上

  • 您发布的代码甚至不包含JTextField,因此很难将焦点放在不存在的组件上。当你问一个问题时,贴一个适当的帖子来说明这个问题

  • 默认情况下,JPanel是不可聚焦的,因此您应该向面板添加可以获得焦点的组件

  • 如果使用了错误的方法,请阅读以下方法的API:

    p1.requestFocus();
    
    正确的使用方法是
    requestFocusInWindow()
    。但是,只能将焦点放在可见框架上的组件上,因此代码顺序应为:

    frame.setVisible(true);
    textField.requestFocusInWindow();
    
    以部分当前日期开始的JTextField/年月日

    您再次谈到这个神秘的文本字段,它没有出现在您发布的代码中。我的猜测是,您没有正确使用布局管理器,并且设置了错误的文本字段大小,因此无法正确显示整个文本

    如果您需要更多帮助,请发布适当的
    SSCCE
    。SSCCE应该包含在您提出的所有问题中,因为问题总是与您编写的代码有关,如果我们看不到代码,我们就无法猜测您可能在做什么

    但是我想把焦点放在这个面板中一个特定的JTextField上

  • 您发布的代码甚至不包含JTextField,因此很难将焦点放在不存在的组件上。当你问一个问题时,贴一个适当的帖子来说明这个问题

  • 默认情况下,JPanel是不可聚焦的,因此您应该向面板添加可以获得焦点的组件

  • 如果使用了错误的方法,请阅读以下方法的API:

    p1.requestFocus();
    
    正确的使用方法是
    requestFocusInWindow()
    。但是,只能将焦点放在可见框架上的组件上,因此代码顺序应为:

    frame.setVisible(true);
    textField.requestFocusInWindow();
    
    以部分当前日期开始的JTextField/年月日

    您再次谈到这个神秘的文本字段,它没有出现在您发布的代码中。我的猜测是,您没有正确使用布局管理器,并且设置了错误的文本字段大小,因此无法正确显示整个文本

    如果您需要更多帮助,请发布适当的
    SSCCE
    。SSCCE应该包含在您提出的所有问题中,因为问题总是与您编写的代码有关,如果我们看不到代码,我们就无法猜测您可能在做什么

    但是我想把焦点放在这个面板中一个特定的JTextField上

  • 您发布的代码甚至不包含JTextField,因此很难将焦点放在不存在的组件上。当你问一个问题时,贴一个适当的帖子来说明这个问题

  • 默认情况下,JPanel是不可聚焦的,因此您应该向面板添加可以获得焦点的组件

  • 如果使用了错误的方法,请阅读以下方法的API:

    p1.requestFocus();
    
    正确的使用方法是
    requestFocusInWindow()
    。但是,只能将焦点放在可见框架上的组件上,因此代码顺序应为:

    frame.setVisible(true);
    textField.requestFocusInWindow();
    
    以部分当前日期开始的JTextField/年月日

    您再次谈到这个神秘的文本字段,它没有出现在您发布的代码中。我的猜测是,您没有正确使用布局管理器,并且设置了错误的文本字段大小,因此无法正确显示整个文本

    如果您需要更多帮助,请发布适当的
    SSCCE
    。SSCCE应该包含在您提出的所有问题中,因为问题总是与您编写的代码有关,如果我们看不到代码,我们就无法猜测您可能在做什么

    但是我想把焦点放在这个面板中一个特定的JTextField上

  • 您发布的代码甚至不包含JTextField,因此很难将焦点放在不存在的组件上。当你问一个问题时,贴一个适当的帖子来说明这个问题

  • 默认情况下,JPanel是不可聚焦的,因此您应该向面板添加可以获得焦点的组件

  • 如果使用了错误的方法,请阅读以下方法的API:

    p1.requestFocus();
    
    正确的使用方法是
    requestFocusInWindow()
    。但是,只能将焦点放在可见框架上的组件上,因此代码顺序应为:

    frame.setVisible(true);
    textField.requestFocusInWindow();
    
    以部分当前日期开始的JTextField/年月日

    您再次谈到这个神秘的文本字段,它没有出现在您发布的代码中。我的猜测是,您没有正确使用布局管理器,并且设置了错误的文本字段大小,因此无法正确显示整个文本

    如果您需要更多帮助,请发布适当的
    SSCCE
    。您提出的所有问题都应包括SSCCE,因为问题将一直存在