gpt4 book ai didi

java - 关注 JTextField 的问题

转载 作者:行者123 更新时间:2023-12-01 22:10:52 29 4
gpt4 key购买 nike

我有两个问题,请记住我是一个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);

2.我在聚焦方面遇到的另一个问题是,在第一个面板中,我有一个 JTextField,它以部分当天的时间开始。/MM/yyyy当我通过 JTextfields 选项卡并到达这个特定字段时,它开始在 yyyy 之后写入,我如何设置它,当我选择此 JTextField 时,它将从正确的点开始。

提前致谢:D

编辑:我添加了 JPanel 类之一的代码。

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

重点应该放在 driver_name JTextField 上,并且 Date JTextFiled 以/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) {

}

最佳答案

but i want to set the focus on a specific JTextField within this Panel

  1. 您发布的代码甚至不包含 JTextField,因此很难将焦点设置在不存在的组件上。当您提出问题时,请发布适当的SSCCE这说明了问题。

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

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

p1.requestFocus();

正确的使用方法是requestFocusInWindow()。但是焦点只能给予可见框架上的组件,因此代码的顺序应该是:

frame.setVisible(true);
textField.requestFocusInWindow();

a JTextField that is being started with a partial current day. /MM/yyyy

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

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

关于java - 关注 JTextField 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31879991/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com