Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.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 按按钮将JTextField整数保存到数组中_Java_Swing_Awt - Fatal编程技术网

Java 按按钮将JTextField整数保存到数组中

Java 按按钮将JTextField整数保存到数组中,java,swing,awt,Java,Swing,Awt,我创建了这个简单的程序,我想让它做的是,当我按下一个按钮时,JTextField中的整数值保存在一个数组中,我想通过多次按下按钮在该JTextField中输入许多值,然后将所有这些值相加并输出总和。我该怎么做 public class Test extends JFrame implements ActionListener { JTextField teArdhurat_JTF = new JTextField(15); JButton teArdhurat_JB = new

我创建了这个简单的程序,我想让它做的是,当我按下一个按钮时,
JTextField
中的整数值保存在一个数组中,我想通过多次按下按钮在该
JTextField
中输入许多值,然后将所有这些值相加并输出总和。我该怎么做

public class Test extends JFrame implements ActionListener {

    JTextField teArdhurat_JTF = new JTextField(15);
    JButton teArdhurat_JB = new JButton("Fut");

    public Test() {
        setTitle("BILANCI");
        setSize(370, 270);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        Container c = getContentPane();
        c.setLayout(new FlowLayout());

        JPanel teArdhurat_JP = new JPanel();
        teArdhurat_JP.add(teArdhurat_JTF);
        teArdhurat_JP.add(teArdhurat_JB);

        c.add(teArdhurat_JP);
        teArdhurat_JB.addActionListener(this);
    }

    public void actionPerformed(ActionEvent e) {

        String teArdhurat_GT = teArdhurat_JTF.getText();
        int teArdhurat = Integer.parseInt(teArdhurat_GT);

        ArrayList<Integer> te_ardhurat = new ArrayList<Integer>(Arrays.asList());

        //Here is the problem the next value that I enter overwrites the previous value

        if (e.getSource() == teArdhurat_JB) {
            te_ardhurat.add(teArdhurat);
        }

        int sum = 0;
        for (int i = 0; i < te_ardhurat.size(); i++) {
            sum = sum + te_ardhurat.get(i);
            System.out.println(sum);
        }
    }

    public static void main(String[] args) {
        new Test();
    }
}
公共类测试扩展JFrame实现ActionListener{
JTextField teArdhurat_JTF=新JTextField(15);
JButton teArdhurat_JB=新的JButton(“Fut”);
公开考试(){
setTitle(“BILANCI”);
设置大小(370270);
setVisible(真);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
容器c=getContentPane();
c、 setLayout(新的FlowLayout());
JPanel teArdhurat_JP=新的JPanel();
teArdhurat_JP.add(teArdhurat_JTF);
催泪弹JP.add(催泪弹JB);
c、 添加(teArdhurat_JP);
teArdhurat_JB.addActionListener(此);
}
已执行的公共无效操作(操作事件e){
字符串teArdhurat_GT=teArdhurat_JTF.getText();
int teArdhurat=Integer.parseInt(teArdhurat_GT);
ArrayList te_ardhurat=新的ArrayList(Arrays.asList());
//问题是,我输入的下一个值会覆盖上一个值
如果(例如getSource()==teArdhurat_JB){
添加(泪液);
}
整数和=0;
对于(int i=0;i
因为每次调用actionPerformed方法时,它都会创建一个没有数据的新ArrayList。此ArrayList的作用域一直到方法的末尾,并将存储在堆栈中

在您的案例中需要一个类成员变量

public class Test extends JFrame implements ActionListener {

    JTextField teArdhurat_JTF = new JTextField(15);
    JButton teArdhurat_JB = new JButton("Fut");
    private final ArrayList<Integer> te_ardhurat = new ArrayList<Integer>(Arrays.asList());
公共类测试扩展JFrame实现ActionListener{
JTextField teArdhurat_JTF=新JTextField(15);
JButton teArdhurat_JB=新的JButton(“Fut”);
private final ArrayList te_ardhurat=新的ArrayList(Arrays.asList());

您的代码和组件的布局方式都不好。因此,我想从头开始编写一个解决方案。请仔细阅读,了解如何以更专业的方式布局swing组件

package com.java.demo;

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.HeadlessException;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;

public class TestFrame extends JFrame {
    List<Integer> numbers = new ArrayList<>();

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

    private TestFrame() throws HeadlessException {
        super();

        this.setLocationByPlatform(true);
        JPanel contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        GridBagLayout gbl_contentPane = new GridBagLayout();
        gbl_contentPane.columnWidths = new int[] { 100, 0 };
        gbl_contentPane.rowHeights = new int[] { 0, 0, 0 };
        gbl_contentPane.columnWeights = new double[] { 0.0, 1.0, Double.MIN_VALUE };
        gbl_contentPane.rowWeights = new double[] { 0.0, 0.0, Double.MIN_VALUE };
        contentPane.setLayout(gbl_contentPane);

        JTextField textField = new JTextField();
        GridBagConstraints gbc = new GridBagConstraints();
        gbc.insets = new Insets(0, 0, 5, 0);
        gbc.fill = GridBagConstraints.HORIZONTAL;
        gbc.gridx = 1;
        gbc.gridy = 0;
        contentPane.add(textField, gbc);
        textField.setColumns(10);

        JLabel totalLabel = new JLabel("Total:");
        gbc.fill = GridBagConstraints.NORTHWEST;
        gbc.gridx = 0;
        gbc.gridy = 1;
        gbc.gridwidth = 1;
        gbc.gridheight = 1;
        gbc.weightx = 1;
        gbc.insets = new Insets(5, 1, 1, 5);
        contentPane.add(totalLabel, gbc);

        JButton sumButton = new JButton("Sum");
        gbc = new GridBagConstraints();
        gbc.insets = new Insets(4, 4, 4, 8);
        gbc.gridx = 2;
        gbc.gridy = 0;
        contentPane.add(sumButton, gbc);
        sumButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                numbers.add(Integer.parseInt(textField.getText()));
                totalLabel.setText("Total: " + numbers.stream().mapToInt(Integer::intValue).sum());

            }
        });

        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.pack();
        this.setVisible(true);
    }
}
package com.java.demo;
导入java.awt.GridBagConstraints;
导入java.awt.GridBagLayout;
导入java.awt.HeadlessException;
导入java.awt.Insets;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.util.ArrayList;
导入java.util.List;
导入javax.swing.JButton;
导入javax.swing.JFrame;
导入javax.swing.JLabel;
导入javax.swing.JPanel;
导入javax.swing.JTextField;
导入javax.swing.border.EmptyBorder;
公共类TestFrame扩展了JFrame{
列表编号=新的ArrayList();
公共静态void main(字符串[]args){
新的TestFrame();
}
private TestFrame()抛出HeadlessException{
超级();
此.setLocationByPlatform(true);
JPanel contentPane=新的JPanel();
setboorder(新的EmptyBorder(5,5,5,5));
setContentPane(contentPane);
GridBagLayout gbl_contentPane=新的GridBagLayout();
gbl_contentPane.columnWidths=newint[]{100,0};
gbl_contentPane.rowHeights=newint[]{0,0,0};
gbl_contentPane.columnWeights=新的double[]{0.0,1.0,double.MIN_VALUE};
gbl_contentPane.rowWeights=newdouble[]{0.0,0.0,double.MIN_VALUE};
setLayout(gbl_contentPane);
JTextField textField=新的JTextField();
GridBagConstraints gbc=新的GridBagConstraints();
gbc.插图=新插图(0,0,5,0);
gbc.fill=GridBagConstraints.HORIZONTAL;
gbc.gridx=1;
gbc.gridy=0;
contentPane.add(textField,gbc);
textField.setColumns(10);
JLabel totalabel=新JLabel(“总计:”);
gbc.fill=GridBagConstraints.NORTHWEST;
gbc.gridx=0;
gbc.gridy=1;
gbc.gridwidth=1;
gbc.gridheight=1;
gbc.weightx=1;
gbc.插图=新插图(5,1,1,5);
contentPane.add(totalabel,gbc);
JButton sumButton=新JButton(“总和”);
gbc=新的GridBagConstraints();
gbc.插图=新插图(4,4,4,8);
gbc.gridx=2;
gbc.gridy=0;
contentPane.add(sumButton,gbc);
sumButton.addActionListener(新ActionListener(){
@凌驾
已执行的公共无效操作(操作事件e){
add(Integer.parseInt(textField.getText());
totalabel.setText(“Total:+numbers.stream().mapToInt(Integer::intValue.sum());
}
});
此.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
这个包();
此.setVisible(true);
}
}

希望这有帮助。祝您编码愉快。

您想在文本框中输入数字的总和吗?我想填写ArrayList te_ardhurat=new ArrayList(Arrays.asList()),方法是在JText字段a中输入一个值,然后按我创建的按钮