java中的数组问题

时间:2011-03-07 15:56:32

标签: java arrays swing

您好 我正在制作一个程序,通过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)
    {

    }
}

7 个答案:

答案 0 :(得分:1)

如果您有过使用C ++的经验,那么将Java数组视为C ++数组,一旦定义它们的大小,它就会保持这种状态。如果您希望增加容量,则需要重新创建数组并在其中添加旧数组的内容。基本上这就是矢量所做的。

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

如果你需要一个数组,可以使用toArray()方法转换它(尽管根据我的经验,ArrayList可以完成你需要的所有工作)。

答案 1 :(得分:1)

第一次初始化后,无法更改java中数组的大小。

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

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

并将每个用户添加到ArrayList:

user.add(username);

答案 2 :(得分:0)

使用ArrayList

答案 3 :(得分:0)

你需要的不是一个数组,而是一个更灵活的数据类型(能够“增长”大小),就像一些List实现一样:ArrayList实际上是由一个数组支持的,但是你不需要管理(re分配自己。

答案 4 :(得分:0)

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

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

void actionPerformed(event)
{
    if(it's logOn button action)
    {
        add user to loggedOnUsers list
    }
    else
    {
       remove user from loggedOnUsers list
    }
}

答案 5 :(得分:0)

您可以使用ArrayList,而不是使用String数组。像这样的东西

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

在按钮或文字更改事件等某些操作上写下此

user.add(textField1.getText());

答案 6 :(得分:0)

actionPerformed方法应该

  • 在User数组中添加一个字符串(应该命名为users
  • 询问阵列的新长度
  • 更改计数文本字段中的值(textfield1,其名称确实错误)

问题是Java数组具有固定长度。他们无法成长。这就是java.util.ArrayList存在的原因:它是一个类似于动态长度数组的类。阅读its javadoc以了解如何使用它。