Swing GUI添加用户输入的数字列表

时间:2014-05-10 04:32:36

标签: java swing

由于无法弄清楚这个看似简单的代码,我感觉相当愚蠢,但作为初学者,我感到难过。我有一个带有textArea的GUI供用户输入数字,一个按钮应该“监听”这些数字,然后是一个textField来显示总和。我在textField中显示了数字,但我不确定如何总结它们。

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

import javax.swing.WindowConstants;
import javax.swing.SwingUtilities;

public class Main extends javax.swing.JFrame {
private JTextArea inputArea;
private JTextField resultField;
private JButton calcBtn;

public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            Main inst = new Main();
            inst.setLocationRelativeTo(null);
            inst.setVisible(true);
        }
    });
}

public Main() {
    super();
    initGUI();
}

private void initGUI() {
    try {
        setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
        getContentPane().setLayout(null);
        {
            inputArea = new JTextArea();
            getContentPane().add(inputArea);
            inputArea.setBounds(5, 12, 214, 233);
        }
        {
            calcBtn = new JButton();
            getContentPane().add(calcBtn);
            calcBtn.setText("Obtain the sum");
            calcBtn.setBounds(257, 113, 99, 23);
            calcBtn.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                    calcBtnActionPerformed(evt);

                }
            });
        }
        {
            resultField = new JTextField();
            getContentPane().add(resultField);
            resultField.setBounds(242, 55, 139, 28);
        }
        pack();
        setSize(400, 300);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

private void calcBtnActionPerformed(ActionEvent evt) {
    try {

        String[] lines = inputArea.getText().split("<br/>");

        int sum = 0;
        for (int i = 0; i < lines.length; i++) {

            resultField.setText(lines[i]);
        }
    }catch (NumberFormatException e) {
        JOptionPane.showMessageDialog(null, "Enter numbers only");
    }

}
}

1 个答案:

答案 0 :(得分:0)

  1. 找出JTextArea中数字的格式。
  2. 这将告诉您如何从其保存的文本中提取信息。
  3. 考虑获取数据的一种方法是使用JTextArea的文本创建一个新的Scanner对象
  4. 然后在scanner.nextInt()循环中致电while (scanner.hasNextInt())
  5. 或者您可以拆分空格:lines = text.split("\\s+");,然后在添加之前将数组中的每个项解析为int。
  6. 避免使用null布局和setBounds。它会在不久的将来咬你一口气。