gpt4 book ai didi

java - 如果前一个 JTextField 中已有数字,如何将从 JButton 输入的数字放入下一个 JTextfield

转载 作者:行者123 更新时间:2023-12-01 18:10:13 24 4
gpt4 key购买 nike

我有六个 JTextField 供用户输入数字。只能通过单击带有所需数字的按钮来输入数字(数字为 1 - 49)。

我正在尝试设计它,以便如果一个文本字段中已经有数字,则输入的下一个数字将放置在下一个可用的文本字段中,并且如果所有文本字段中都有数字,那么如果用户尝试,则会出现一条警告消息输入第七个数字。

下面的代码是我玩了几个小时后得到的,但它仍然没有达到我想要的效果:

boolean clicked = true;

public void button()
{
try
{
if(clicked)
{
btn1.setEnabled(false);

if(" ".equals(txtSubOne.toString()))
{
txtSubOne.setText("1");
}
else if(!" ".equals(txtSubOne.toString()))
{
txtSubTwo.setText("1");
}
else if(txtSubThree == null)
{
txtSubThree.setText("1");
}
else if(txtSubFour == null)
{
txtSubFour.setText("1");
}
else if(txtSubFive == null)
{
txtSubFive.setText("1");
}
}
}
catch(Exception e)
{
printStackTrace();
}

最佳答案

  1. 创建一个面板来保存要在框架上显示的文本字段。创建一个列表来包含文本字段,以便您知道应该更新哪个文本字段。

  2. 使用循环创建 JTextField 并将其添加到面板和列表中。

  3. 为每个按钮创建一个 ActionListener toad。 ActionListener 将获取列表中的第一个文本字段,并将按钮中的文本添加到文本字段。然后它会从列表中删除文本字段,这样您就不会再次向其中添加文本。

  4. 创建按钮面板。然后创建一个循环来创建按钮,并将 ActionListener 添加到每个按钮并将按钮添加到面板。

类似于:

import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.util.List;
import javax.swing.*;
import javax.swing.border.*;

public class SSCCE extends JPanel
{
private List<JTextField> textFields = new ArrayList<JTextField>();

public SSCCE()
{
setLayout( new BorderLayout() );
JPanel textFieldPanel = new JPanel();

for (int i = 0; i < 7; i++)
{
JTextField tf = new JTextField(2);
tf.setEditable( false );
textFieldPanel.add( tf );
textFields.add( tf );
}

ActionListener al = new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
if (textFields.size() == 0)
{
System.out.println("Text Fields are full");
return;
}

JTextField tf = textFields.remove(0);
JButton button = (JButton)e.getSource();
String text = e.getActionCommand();
tf.setText( text );
}
};

JPanel buttonPanel = new JPanel( new GridLayout(0, 7) );

for (int i = 0; i < 14; i++)
{
JButton button = new JButton("" + i);
button.addActionListener( al );
buttonPanel.add( button );
}

add(textFieldPanel, BorderLayout.PAGE_START);
add(buttonPanel, BorderLayout.CENTER);
}

private static void createAndShowGUI()
{
JFrame frame = new JFrame("SSCCE");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new SSCCE());
frame.setLocationByPlatform( true );
frame.pack();
frame.setVisible( true );
}

public static void main(String[] args)
{
EventQueue.invokeLater( () -> createAndShowGUI() );
/*
EventQueue.invokeLater(new Runnable()
{
public void run()
{
createAndShowGUI();
}
});
*/
}
}

关于java - 如果前一个 JTextField 中已有数字,如何将从 JButton 输入的数字放入下一个 JTextfield,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33618694/

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