我缩小了它,以便从jtextfield到int的int转换是错误,但我不确定将它们放在哪里
package demooo;
/*
* GridBagLayoutDemo.java requires no other files.
*/
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import javax.swing.*;
import javax.swing.text.DefaultCaret;
public class Demooo implements ActionListener {
final static boolean shouldFill = true;
final static boolean shouldWeightX = true;
final static boolean RIGHT_TO_LEFT = false;
private final static String newline = "\n";
protected JTextField textField;
protected JTextArea textArea;
public static void addComponentsToPane(Container pane) {
if (RIGHT_TO_LEFT) {
pane.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
}
/*test for team names */
//String[] teamString = {};
String[] reffString = {"bob", "fred", "jon", "ed", "killa"};
JLabel label;
JLabel labelA;
JLabel labelH;
JLabel labelA2;
JLabel labelH2;
JTextField text;
int g = 0 ;
JButton next;
JButton button1;
JButton button2;
JLabel blank;
JLabel Head;
JComboBox comboH;
JComboBox comboA;
JComboBox comboReff;
String winner;
Connection con = null;
Statement st = null;
ResultSet rs = null;
/* int h = Integer.parseInt(homegoal.getText());
int a = Integer.parseInt(awaygoal.getText());
int h2 = Integer.parseInt(homegoal2.getText());
int a2 = Integer.parseInt(awaygoal2.getText());*/
pane.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
if (shouldFill) {
//natural height, maximum width
c.fill = GridBagConstraints.HORIZONTAL;
}
/*select home team*/
labelH = new JLabel("Home Team");
if (shouldWeightX) {
c.weightx = 0.5;
}
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 0;
c.gridy = 0;
pane.add(labelH, c);
comboH = new JComboBox(/*teamString*/);
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 1;
c.gridx = 0;
c.gridy = 1;
pane.add(comboH, c);
/* to add blank space between teams*/
/*cant get right yet but will try */
/*select away team*/
labelA = new JLabel("Away Team");
if (shouldWeightX) {
c.weightx = 0.5;
}
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 7;
c.gridy = 0;
pane.add(labelA, c);
comboA = new JComboBox(/*teamString*/);
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 1;
c.gridx = 7;
c.gridy = 1;
pane.add(comboA, c);
/*Team 1 home*/
Head = new JLabel("Home Game Score", SwingConstants.CENTER);
c.fill = GridBagConstraints.HORIZONTAL;
c.ipady = 20; //make this component tall
c.weightx = 0.0;
c.gridwidth = 3;
c.gridx = 0;
c.gridy = 3;
pane.add(Head, c);
Head.setFont(new Font("Serif", Font.BOLD, 18));
/*enter score for home game*/
labelH2 = new JLabel("Home Team Goals");
if (shouldWeightX) {
c.weightx = 0.5;
}
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 0;
c.gridy = 4;
pane.add(labelH2, c);
JTextField homegoal = new JTextField(2);
if (shouldWeightX) {
c.weightx = 0.5;
}
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 0;
c.gridy = 5;
pane.add(homegoal, c);
int h = Integer.parseInt(homegoal.getText());
/*ref section*/
label = new JLabel("Referee");
if (shouldWeightX) {
c.weightx = 0.5;
}
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 3;
c.gridy = 4;
pane.add(label, c);
comboReff = new JComboBox(reffString);
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 1;
c.gridx = 3;
c.gridy = 5;
pane.add(comboReff, c);
/*other teams goals*/
label = new JLabel("Away Team Goals");
if (shouldWeightX) {
c.weightx = 0.5;
}
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 7;
c.gridy = 4;
pane.add(label, c);
JTextField awaygoal = new JTextField(2);
if (shouldWeightX) {
c.weightx = 0.5;
}
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 7;
c.gridy = 5;
pane.add(awaygoal, c);
int a = Integer.parseInt(awaygoal.getText());
/*team 2 is home team*/
Head = new JLabel("Away Game Score", SwingConstants.CENTER);
c.fill = GridBagConstraints.HORIZONTAL;
c.ipady = 20; //make this component tall
c.weightx = 0.0;
c.gridwidth = 3;
c.gridx = 0;
c.gridy = 6;
pane.add(Head, c);
Head.setFont(new Font("Serif", Font.BOLD, 18));
label = new JLabel("Home Team Goals");
if (shouldWeightX) {
c.weightx = 0.5;
}
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 0;
c.gridy = 8;
pane.add(label, c);
JTextField homegoal2 = new JTextField(2);
if (shouldWeightX) {
c.weightx = 0.5;
}
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 0;
c.gridy = 9;
pane.add(homegoal2, c);
int h2 = Integer.parseInt(homegoal2.getText());
/*reff */
label = new JLabel("Referee");
if (shouldWeightX) {
c.weightx = 0.5;
}
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 3;
c.gridy = 8;
pane.add(label, c);
comboReff = new JComboBox(reffString);
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 1;
c.gridx = 3;
c.gridy = 9;
pane.add(comboReff, c);
/*next teams goals*/
label = new JLabel("Away Team Goals");
if (shouldWeightX) {
c.weightx = 0.5;
}
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 7;
c.gridy = 8;
pane.add(label, c);
JTextField awaygoal2 = new JTextField(2);
if (shouldWeightX) {
c.weightx = 0.5;
}
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 7;
c.gridy = 9;
pane.add(awaygoal2, c);
int a2 = Integer.parseInt(awaygoal2.getText());
/*match set complete*/
button1 = new JButton("The winner of this set of matches was");
c.fill = GridBagConstraints.HORIZONTAL;
c.ipady = 20; //make this component tall
c.weightx = 2;
c.gridwidth = 8;
c.gridx = 0;
c.gridy = 10;
pane.add(button1, c);
button1.addActionListener(new ActionListener() {
public void actionPerformed(int g) {
if (h>a){
g =+1;
}else if (a>h){
g =-1;}
else{
g = g;}
}
@Override
public void actionPerformed(ActionEvent ae) {
throw new UnsupportedOperationException("Not supported
yet."); //To change body of generated methods, choose Tools | Templates.
}
});
if (g > 0){
winner = "home";
}
else if (g < 0){
winner = "away";}
else {
winner = "Draw";}
label = new JLabel (winner);
c.fill = GridBagConstraints.HORIZONTAL;
c.ipady = 20; //make this component tall
c.weightx = 2;
c.gridwidth = 8;
c.gridx = 0;
c.gridy = 11;
pane.add(label, c);
button2 = new JButton ("Next Match");
c.fill = GridBagConstraints.HORIZONTAL;
c.ipady = 20; //make this component tall
c.weightx = 2;
c.gridwidth = 8;
c.gridx = 0;
c.gridy = 12;
pane.add(button2, c);
try {
con = DriverManager.getConnection("jdbc:derby://localhost:1527/"
+ "jfl", "jfl", "jfl");
st = con.createStatement();
String s = "SELECT Teamname,ID from JFL.TEAMS";
rs = st.executeQuery(s);
while (rs.next()) {
comboH.addItem(rs.getString(1) + " " + rs.getString(2));
comboA.addItem(rs.getString(1) + " " + rs.getString(2));
}
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "ERROR");
} finally {
try {
st.close();
rs.close();
con.close();
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "ERROR CLOSE");
}
}
}
/**
* Create the GUI and show it.
*
* @param evt
*/
public void actionPerformedd(ActionEvent evt) {
String text = textField.getText();
textArea.append(text + newline);
textField.selectAll();
//Make sure the new text is visible, even if there
//was a selection in the text area.
textArea.setCaretPosition(textArea.getDocument().getLength());
}
private static void createAndShowGUI() {
//Create and set up the window.
JFrame frame = new JFrame("Junior Football League");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JMenuBar menubar = new JMenuBar();
frame.setJMenuBar(menubar);
//file menu
JMenu fileMenu = new JMenu("File");
menubar.add(fileMenu);
JMenuItem quitItem = new JMenuItem("Quit");
fileMenu.add(quitItem);
quitItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//call another method to close window
System.exit(0);
}
});
JMenu helpItem = new JMenu("Teams");
menubar.add(helpItem);
JMenuItem subMenu = new JMenuItem("Create New Team");
public static void main(String[] args) {
//Schedule a job for the event-dispatching thread:
//creating and showing this application's GUI.
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
@Override
public void actionPerformed(ActionEvent e) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
}
给出的错误信息是
运行:
线程“AWT-EventQueue-0”中的异常 java.lang.NumberFormatException:对于输入字符串:“”at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 在java.lang.Integer.parseInt(Integer.java:592)at java.lang.Integer.parseInt(Integer.java:615)at demooo.Demooo.addComponentsToPane(Demooo.java:127)at at demooo.Demooo.createAndShowGUI(Demooo.java:918)at demooo.Demooo.access $ 000(Demooo.java:12)at demooo.Demooo $ 6.run(Demooo.java:936)at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)at at java.awt.EventQueue.access $ 500(EventQueue.java:97)at java.awt.EventQueue $ 3.run(EventQueue.java:709)at java.awt.EventQueue $ 3.run(EventQueue.java:703)at java.security.AccessController.doPrivileged(Native Method)at java.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) 在java.awt.EventQueue.dispatchEvent(EventQueue.java:726)at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 在 java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) 在 java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) 建立成功(总时间:1秒)
答案 0 :(得分:1)
你在第127行有这个。
int h = Integer.parseInt(homegoal.getText());
异常中的以下行告诉我错误是在该行,它是关于转换形式String到Int。
java.lang.Integer.parseInt(Integer.java:592) at
java.lang.Integer.parseInt(Integer.java:615) at
demooo.Demooo.addComponentsToPane(Demooo.java:127) at
我会看一下homegoal.getText()
的价值。如果为null,则在int变量中输入0。
编辑:从它的外观来看,您只是创建文本字段,因此它将为空。这就是错误的原因。检查是否为空并在空时分配0。
int h = (homegoal == null || homegoal.getText().isEmpty()? 0:Integer.parseInt(homegoal.getText());