2013-03-30 25 views
0

即时通讯这个GUI有点麻烦。林新的制作图形用户界面,所以如果它的东西基本我很抱歉问。我似乎无法在谷歌的任何地方找到我的问题的答案。 即时通讯的问题是,当我点击任何按钮时,我得到一个错误,当任何一个文本框留空。这里是我到目前为止的代码JButton不能使用textfield

import java.awt.BorderLayout; 
import java.awt.FlowLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.util.ArrayList; 
import javax.swing.JButton; 
import javax.swing.JComboBox; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 
import javax.swing.JOptionPane; 

public class MainGUI extends JFrame implements ActionListener{ 

ArrayList<Object> list; 
JTextField name, surname, age, height, weight; 
JComboBox<String> sportList, gender; 
JButton btnSave; 
JButton btnExit; 
JButton btnclrtxt; 


/** 
* @param args 
*/ 
public MainGUI() { 
    super("Adding members"); 
    this.setLayout(new BorderLayout()); 
    JPanel panel = new JPanel(new FlowLayout()); 
    name = new JTextField(10); 
    surname = new JTextField(10); 
    age = new JTextField(10); 
    height = new JTextField(5); 
    weight = new JTextField(10); 
    gender = new JComboBox<String>(new String[] { "Male", "Female" }); 
    sportList = new JComboBox<String>(new String[] { "Football", 
      "HandBall", "BasketBall", "Rugby", "Hockey", "Tennis" }); 

    panel.add(new JLabel("Name:")); 
    panel.add(name); 
    panel.add(new JLabel("Surname:")); 
    panel.add(surname); 
    panel.add(new JLabel("Age:")); 
    panel.add(age); 
    panel.add(new JLabel("Gender:")); 
    panel.add(gender); 
    panel.add(new JLabel("Height:")); 
    panel.add(height); 
    panel.add(new JLabel("Weight:")); 
    panel.add(weight); 
    panel.add(new JLabel("Sport Speciality:")); 
    panel.add(sportList); 

    btnSave = new JButton("Save member"); 
    panel.add(btnSave); 
    btnSave.addActionListener(this); 

    btnclrtxt = new JButton("Clear text"); 
    panel.add(btnclrtxt); 
    btnclrtxt.addActionListener(this); 

    btnExit = new JButton("Exit"); 
    panel.add(btnExit); 
    btnExit.addActionListener(this); 

    this.pack(); 
    this.add(panel); 
    this.setSize(400, 300); 
    this.setVisible(true); 
    this.setLocationRelativeTo(null); 
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
} 

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

public void actionPerformed(ActionEvent e) { 

      String namestr = name.getText().toLowerCase(); 
    String surnameStr = surname.getText().toLowerCase(); 
    int ageNum = Integer.parseInt(age.getText().toLowerCase()); 
    double heightNum = Double.parseDouble(height.getText().toLowerCase()); 
    double weightNum = Double.parseDouble(weight.getText().toLowerCase()); 
    String sportsStr = sportList.getSelectedItem().toString(); 
    String genderStr = gender.getSelectedItem().toString(); 

       if(e.getSource()==btnSave) { 
     list = new ArrayList<Object>(); 
     list.add("Name is "+namestr); 
     list.add("Surname is "+surnameStr); 
     list.add("Age is "+ageNum); 
     list.add("Height is "+heightNum); 
     list.add("Weight is "+weightNum); 
     list.add("Sport "+sportsStr); 
     list.add("Gender "+genderStr); 
     FileRead.writeFile(list); 
     System.out.println("Done!"); 
       } 

    if(e.getSource()==btnExit) { 
       dispose(); 
            System.exit(0); 
          } 

    if(e.getSource()==btnclrtxt) { 
     name.setText(""); 
     surname.setText(""); 
     age.setText(""); 
     height.setText(""); 
     weight.setText(""); 
       } 
} 
} 
+0

你可以发布错误吗? –

回答

2

wotking,但你不若JTextField.isEmpty测试,然后解析抛出当前的异常,而不是说用

  • JFormattedTextFieldNumberFormatte r,则默认瓦鲁尔足球俱乐部是0(零)

  • JSpinnerSpinnerNumberModel,则默认值瓦鲁尔足球俱乐部是0(零)

  • 添加DocumentFilter平淡JTextField与过滤non_numeric字符,但仍需要测试,如果JTextField.isEmpty(

2

我怀疑这是因为这些领域:

int ageNum = Integer.parseInt(age.getText().toLowerCase()); 
double heightNum = Double.parseDouble(height.getText().toLowerCase()); 
double weightNum = Double.parseDouble(weight.getText().toLowerCase()); 

解析将抛出一个异常如果这些字段中的任何一个为空,或者包含不正确的值;确保你检查它们包含一个(有效的)值。例如,使用JFormattedTextField