Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中的数组问题_Java_Arrays_Swing - Fatal编程技术网

java中的数组问题

java中的数组问题,java,arrays,swing,Java,Arrays,Swing,你好 我正在制作一个程序,通过textfield0输入用户名来跟踪登录用户的数量。我刚接触java时遇到了一个障碍,我仍然不明白一些事情,我想知道如何实时向数组用户添加名称,并让数组计数,然后在textfield1中显示 先谢谢你 public class UserTracking { public static void main(String[] args){ final Kong f = new Kong(); f.pack();

你好 我正在制作一个程序,通过textfield0输入用户名来跟踪登录用户的数量。我刚接触java时遇到了一个障碍,我仍然不明白一些事情,我想知道如何实时向数组用户添加名称,并让数组计数,然后在textfield1中显示

先谢谢你

public class UserTracking {


    public static void main(String[] args){
        final Kong f = new Kong();
        f.pack();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setSize(200,110);
        f.setVisible(true);

    }


}
class Kong extends JFrame implements  ActionListener
{
    JTextField textfield0 = new JTextField();
    JTextField textfield1 = new JTextField();
    JLabel  label0 = new JLabel("User");
    JLabel  label1 = new JLabel("Number of Users:");
    JButton btnon = new JButton("Log on");
    JButton btnoff = new JButton("Log off");
    String User[] ={};


    public Kong()
    {
        super("Shazam");

    JPanel panel1 = new JPanel(new BorderLayout());
        panel1.add(textfield0,BorderLayout.CENTER);
        panel1.add(label0,BorderLayout.WEST);
    JPanel panel2 = new JPanel(new BorderLayout(10,10));
        panel2.add(btnon,BorderLayout.WEST);
        panel2.add(btnoff,BorderLayout.EAST);
    JPanel panel3 = new JPanel(new BorderLayout());
        panel3.add(textfield1,BorderLayout.CENTER);
        panel3.add(label1,BorderLayout.WEST);



    JPanel frame =  new JPanel(new BorderLayout(5,5));
        frame.add(panel1,BorderLayout.NORTH);
        frame.add(panel2,BorderLayout.EAST);
        frame.add(panel3,BorderLayout.SOUTH);
        setContentPane(frame);
    }

    public void actionPerformed(ActionEvent e)
    {

    }
}

使用A.

< P>不需要一个数组,而是一个更灵活的数据类型(可以在大小上),比如一些列表实现:ARARYLIST实际上是由一个数组支持的,但是你不需要管理(重新)分配你自己。

< P>如果你有C++的经验,那么把java数组看作C++数组,一旦定义了它们的大小,就这样。如果希望增加容量,则需要重新创建阵列,并在其中添加旧阵列的内容。基本上这就是vector所做的

在Java中,如果想要一个可扩展的数组,基本上需要一个列表对象。我强烈建议您使用ArrayList,它本质上相当于Java中的vector,允许您添加任意多的对象,而不必担心其容量


如果您需要数组,可以使用toArray()方法对其进行转换(不过根据我的经验,ArrayList可以满足您的所有要求)。

在首次初始化之后,java中数组的大小无法更改

如果需要动态大小的数据容器,可以使用接口的任何实现。例如,ArrayList:

ArrayList<String> user = new ArrayList<String>();
user.add(username);

您还缺少到ActionListener的链接按钮。完成后,您可以使用ArrayList在用户登录时将其添加到列表中,并在用户注销时将其从列表中删除

private ArrayList<String> loggedOnUsers = new ArrayList<String>();

使用ArrayList比使用字符串数组更容易。像这样的

ArrayList<String> user = new ArrayList<String>();

actionPerformed方法应该

  • 向用户数组中添加字符串(应命名为
    users
  • 询问数组的新长度
  • 更改计数文本字段中的值(
    textfield1
    ,它确实有一个坏名称)
问题是Java数组的长度是固定的。它们不能生长。这就是
java.util.ArrayList
存在的原因:它是一个行为类似于动态长度数组的类。通过阅读了解如何使用它

ArrayList<String> user = new ArrayList<String>();
user.add(textField1.getText());