Java 在运行时在Jframe上添加文本字段

Java 在运行时在Jframe上添加文本字段,java,swing,jframe,jtextfield,Java,Swing,Jframe,Jtextfield,我试图通过在运行时获取输入来在框架上创建文本字段。可能吗?或者我必须为它创建另一个框架。我试过这个代码,但不起作用。请帮帮我,告诉我这个代码出了什么问题 import java.awt.BorderLayout; import java.awt.LayoutManager; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import jav

我试图通过在运行时获取输入来在框架上创建文本字段。可能吗?或者我必须为它创建另一个框架。我试过这个代码,但不起作用。请帮帮我,告诉我这个代码出了什么问题

import java.awt.BorderLayout;
import java.awt.LayoutManager;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Check extends JFrame implements ActionListener
{
JTextField txtqty;
JTextField[] tfArr;
JPanel p1,p2;
JButton bsmbt;

public Check()
{
    GUIDesign();
}

public void GUIDesign()
{
    p1 = new JPanel();
    txtqty = new JTextField(10);
    JButton bsmbt= new JButton("OK");
    p1.add(txtqty);
    p1.add(bsmbt);

    p2=new JPanel();
    p2.setLayout(null);
    add(p1,BorderLayout.NORTH);
    setSize(500, 500);
    setVisible(true);
    setLocation(100, 100);

    bsmbt.addActionListener(this);




}

public static void main(String[] args)
{
    new Check();
}

public void TFArray(JTextField[] temp)
{
    int x,y,width,height;
    x=10;y=30;width=50;height=20;
    int no_of_textboxes = Integer.parseInt(txtqty.getText());
    temp=new JTextField[no_of_textboxes];

    for(int i=0;i<no_of_textboxes;i++)
    {
        temp[i]= new JTextField(10);
        temp[i].setBounds(x, y, width, height);
        x+=(width+10);
        p2.add(temp[i]);

    }
    add(p2);

}

@Override
public void actionPerformed(ActionEvent ae) {

        JOptionPane.showMessageDialog(this, txtqty.getText());
        TFArray(tfArr);
}


}
导入java.awt.BorderLayout;
导入java.awt.LayoutManager;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入javax.swing.JButton;
导入javax.swing.JFrame;
导入javax.swing.JOptionPane;
导入javax.swing.JPanel;
导入javax.swing.JTextField;
公共类检查扩展JFrame实现ActionListener
{
JTextField txtqty;
JTextField[]tfArr;
JPanel p1,p2;
JButton-bsmbt;
公开检查()
{
路标();
}
公共交通路标()
{
p1=新的JPanel();
txtqty=新的JTextField(10);
JButton bsmbt=新JButton(“正常”);
p1.添加(txtqty);
p1.添加(bsmbt);
p2=新的JPanel();
p2.设置布局(空);
添加(p1,BorderLayout.NORTH);
设置大小(500500);
setVisible(真);
设置位置(100100);
bsmbt.addActionListener(此);
}
公共静态void main(字符串[]args)
{
新支票();
}
公共无效数组(JTextField[]temp)
{
整数x,y,宽度,高度;
x=10;y=30;宽度=50;高度=20;
int no_of_textboxs=Integer.parseInt(txtqty.getText());
temp=新的JTextField[没有任何文本框];

for(int i=0;i方法TFArray()不起作用。

您的代码中有许多错误:

  • public void TFArray(JTextField[]temp)
    :方法名称应以lowerCamelCase开头

  • <> L> > p> >扩展代码> jFrase>代码>,不应扩展<代码> jFrase>代码>,因为当您扩展它时,类<强>是< /强> <代码> jFrase>代码>,<代码> jFrase>代码>是刚性的,因此您不能将其放置在任何其他东西中,而可以考虑创建<代码> jFrase>代码>实例,并且如果您需要扩展<代码> JCOMponent
    扩展自
    JPanel

  • JButton bsmbt=new JButton(“OK”);
    变量
    bsmbt
    是构造函数中的一个局部变量,全局变量
    bsmbt
    不会在任何地方使用,如果您稍后尝试使用它,您将得到一个
    NullPointerException
    ,而是将该行更改为:

    bsmbt= new JButton("OK");
    
  • 您正在为
    p2
    使用
    null
    布局,而不是使用正确的读写模式。Swing设计用于处理不同的PLAF、屏幕大小和分辨率,而像素完美的GUI(使用
    setBounds()
    )这似乎是在Swing中创建复杂GUI的最好、更快的方法,您创建的GUI越多,由此产生的错误就越多

  • 要解决您的问题,请致电

    上面的代码创建了两个文本字段。但是当我再次输入一些值并提交它时,它似乎没有反映任何更改


    这可能是因为每次输入
    TFArray
    方法时,您都在覆盖
    x
    y
    height
    width
    变量。但这只是一个猜测,如果您想要一个真实的答案,请按照上面的建议,发布一个正确有效的您的代码中有很多错误:

  • public void TFArray(JTextField[]temp)
    :方法名称应以lowerCamelCase开头

  • <> L> > p> >扩展代码> jFrase>代码>,不应扩展<代码> jFrase>代码>,因为当您扩展它时,类<强>是< /强> <代码> jFrase>代码>,<代码> jFrase>代码>是刚性的,因此您不能将其放置在任何其他东西中,而可以考虑创建<代码> jFrase>代码>实例,并且如果您需要扩展<代码> JCOMponent扩展自
    JPanel

  • JButton bsmbt=new JButton(“OK”);
    变量
    bsmbt
    是构造函数中的一个局部变量,全局变量
    bsmbt
    不会在任何地方使用,如果您稍后尝试使用它,您将得到一个
    NullPointerException
    ,而是将该行更改为:

    bsmbt= new JButton("OK");
    
  • 您正在为
    p2
    使用
    null
    布局,而不是使用正确的读写模式。Swing设计用于处理不同的PLAF、屏幕大小和分辨率,而像素完美的GUI(使用
    setBounds()
    )这似乎是在Swing中创建复杂GUI的最好、更快的方法,您创建的GUI越多,由此产生的错误就越多

  • 要解决您的问题,请致电

    上面的代码创建了两个文本字段。但是当我再次输入一些值并提交它时,它似乎没有反映任何更改


    这可能是因为每次输入
    TFArray
    方法时,您都在覆盖
    x
    y
    height
    width
    变量。但这只是一个猜测,如果您想要一个真实的答案,请按照上面的建议发布正确有效的哪部分不起作用?您得到的结果是什么这和你想要的有什么不同吗?我们需要更多的可见性,朋友!这段代码只显示一个文本字段和一个按钮,我在上面的panel1中用GUIDesign()方法创建了这个按钮。我想创建输入时给定的尽可能多的文本字段。但这段代码不起作用。1)
    public void TFArray
    方法名称应为较低的平均值,2)
    extends JFrame
    不要扩展
    JFrame
    如果需要扩展某些内容,请从
    JPanel
    扩展,并创建
    JFrame
    的实例。3)
    JButton bsmbt=new JButton(“确定”);
    您知道您的全局变量
    JButton bsmbt;
    没有被使用,是因为那一行吗?.4)哪一部分不起作用?方法TFArray()不起作用。您需要调用和,但请使用。哪个部分不起作用?您得到的结果是什么?它与您想要的有什么不同?我们需要更高的可见性,朋友!此代码仅显示一个文本字段和一个按钮,我在上面的GUIDesign()中的panel1中创建了该字段方法。我想创建输入时给定的尽可能多的文本字段。但这段代码确实如此