JLabel 遇到 NullPointerException 问题,我完全不知道问题出在哪里。问题在于“beskjed”JLabel。
“endeligPris1”JLabel 也有一个不同方法的 setText,但该 JLabel 没有问题。
任何帮助将不胜感激。
public class Salgsvindu extends JFrame implements ActionListener, ItemListener
{
private JPanel vinduPanel, brukerPanel, infoPanel, jtfPanel, displayPanel, beskjedPanel, radioPanel;
private JButton bekreft1, bekreft2, bekreft3;
private JLabel fornavn, etternavn, nasjonalitet, adresse, fdato, genus, tlf, pris, typerkort, kundenr, endeligPris1, endeligPris2, heiser;
private JLabel beskjed;
private JTextField jtfFornavn, jtfEtternavn, jtfAdresse, jtfFdato, jtfTlf, jtfKundenr;
private JComboBox kortTyperCombo1 = new JComboBox();
private JComboBox kortTyperCombo2 = new JComboBox();
private JComboBox nasjonalitetCombo = new JComboBox();
private JComboBox heisCombo = new JComboBox();
private JTextArea display;
private final static String BUTTONPANEL = "Ny Bruker";
private final static String TEXTPANEL = "Nytt Kort";
public JPanel salgsvinduNyBruker()
{
bekreft1 = new JButton("Bekreft kjøp");
fornavn = new JLabel("Fornavn:");
etternavn = new JLabel("Etternavn:");
adresse = new JLabel("Adresse:");
nasjonalitet = new JLabel("Nasjonalitet:");
fdato = new JLabel("Fødselsdato:");
genus = new JLabel("Kjønn");
tlf = new JLabel("Telefonnummer:");
pris = new JLabel("Pris:");
endeligPris1 = new JLabel();
typerkort = new JLabel("Typerkort:");
beskjed = new JLabel();
jtfFornavn = new JTextField(7);
jtfEtternavn = new JTextField(7);
jtfAdresse = new JTextField(7);
jtfFdato = new JTextField(7);
jtfTlf = new JTextField(7);
JRadioButton jrbMann = new JRadioButton("M", false);
JRadioButton jrbKvinne = new JRadioButton("K", false);
radioPanel = new JPanel(new GridLayout(1,0));
radioPanel.add(jrbMann);
radioPanel.add(jrbKvinne);
ButtonGroup radioGenus = new ButtonGroup();
radioGenus.add(jrbMann);
radioGenus.add(jrbKvinne);
//Bunn JPanel til å legge resten på.
JPanel btnPanel = new JPanel(new BorderLayout())
{
@Override
protected void paintComponent(Graphics grphcs)
{
Graphics2D g2d = (Graphics2D) grphcs;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
GradientPaint gp = new GradientPaint(0, 0,
getBackground().brighter().brighter(), 0, getHeight(),
getBackground().darker().darker());
g2d.setPaint(gp);
g2d.fillRect(0, 0, getWidth(), getHeight());
super.paintComponent(grphcs);
}
};
JLabel label = new JLabel();
label.setIcon(new javax.swing.ImageIcon(getClass().getResource("Logo.png")));
btnPanel.add( label , BorderLayout.PAGE_START);
JPanel regPanel = new JPanel(new GridLayout(9,2));
regPanel.setOpaque(false);
btnPanel.add(regPanel, BorderLayout.LINE_START);
regPanel.add(fornavn);
regPanel.add(jtfFornavn);
regPanel.add(etternavn);
regPanel.add(jtfEtternavn);
regPanel.add(adresse);
regPanel.add(jtfAdresse);
regPanel.add(genus);
regPanel.add(radioPanel);
regPanel.add(nasjonalitet);
regPanel.add(nasjonalitetCombo);
regPanel.add(fdato);
jtfFdato.setText("yyyyMMdd");
regPanel.add(jtfFdato);
regPanel.add(tlf);
regPanel.add(jtfTlf);
regPanel.add(typerkort);
kortTyperCombo1.addItemListener(this);
regPanel.add(kortTyperCombo1);
regPanel.add(pris);
regPanel.add(endeligPris1);
bekreft1.addActionListener(this);
btnPanel.add(bekreft1, BorderLayout.PAGE_END);
btnPanel.add(beskjed, BorderLayout.CENTER);
btnPanel.setOpaque(true);
lastKortTyper();
lastNasjonalitet();
return btnPanel;
}
public void jtfNyBrukerTilString()
{
Tidspunkt t = new Tidspunkt();
BekreftNyBruker b = new BekreftNyBruker();
String dbFornavn = jtfFornavn.getText();
String dbEtternavn = jtfEtternavn.getText();
String dbFdat = jtfFdato.getText();
int dbFdato = Integer.parseInt(dbFdat);
String dbTlf = jtfTlf.getText();
String dbkortTyper = (String)kortTyperCombo1.getSelectedItem();
String dbNasjonalitet = (String)nasjonalitetCombo.getSelectedItem();
int dbStartDato = t.getDateTime();
int dbSluttDato = 0;
b.bekreft(dbFornavn, dbEtternavn, dbFdato, dbTlf, dbkortTyper, dbNasjonalitet, dbStartDato, dbSluttDato);
}
/**The method were I get the NullPointerException. Getting NullPointerException in any case what I setText as.**/
public void registrertNyB(String fornavn, String etternavn, String kortType, int kortNr, int kundeNr)
{
beskjed.setText("problem"); // NullPointerException here.
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == bekreft1)
jtfNyBrukerTilString();
}
}
另一个班级。
public class BekreftNyBruker
{
public void bekreft(String dbFornavn, String dbEtternavn, int dbFdato, String dbTlf, String dbkortTyper, String dbNasjonalitet, int dbStartDato, int dbSluttDato)
{
if("Dag".equals(dbkortTyper))
{
dbSluttDato = dbStartDato;
}
else
{
dbSluttDato = 0;
}
finnesBruker( dbFornavn, dbEtternavn, dbFdato, dbTlf, dbkortTyper, dbNasjonalitet, dbStartDato, dbSluttDato);
}
public static void finnesBruker( String fornavn, String etternavn, int fdato, String tlf, String kortTyper, String nasjonalitet, int startDato, int sluttDato)
{
Connection con = null;
DatabaseConnection d = new DatabaseConnection();
try
{
Class.forName(d.getDriver());
con = DriverManager.getConnection(d.getUrl() + d.getDb(), d.getUser(), d.getPass());
try
{
PreparedStatement st = con.prepareStatement("SELECT Fornavn, Etternavn, FDato, Telefon, landskode_Land FROM kundetabell WHERE Fornavn = ? AND Etternavn = ? AND FDato = ? AND Telefon = ? AND landskode_Land = ?");
st.setString(1, fornavn);
st.setString(2, etternavn);
st.setInt(3, fdato);
st.setString(4, tlf);
st.setString(5, nasjonalitet);
ResultSet res = st.executeQuery();
String fnavn = "";
String enavn = "";
String ttlf = "";
String nasj = "";
int ffdato = 0;
while(res.next())
{
fnavn = res.getString("Fornavn");
enavn = res.getString("Etternavn");
ffdato = res.getInt("FDato");
ttlf = res.getString("Telefon");
nasj = res.getString("landskode_Land");
}
if(fornavn.equals(fnavn) && etternavn.equals(enavn) && fdato == ffdato && tlf.equals(ttlf) && nasjonalitet.equals(nasj) )
{
//< Kode som skriver ut i displayet at brukeren finnes fra før >
}
else
{
nyBruker( fornavn, etternavn, fdato, tlf, kortTyper, nasjonalitet, startDato, sluttDato);
}
st.close();
res.close();
con.close();
}
catch (SQLException s)
{
Logger.getLogger(BekreftNyBruker.class.getName()).log(Level.SEVERE, null, s);
}
}
catch (Exception e)
{
Logger.getLogger(BekreftNyBruker.class.getName()).log(Level.SEVERE, null, e);
}
}
public static void nyBruker(String fornavn, String etternavn, int fdato, String tlf, String kortTyper, String nasjonalitet, int startDato, int sluttDato)
{
Connection con = null;
DatabaseConnection d = new DatabaseConnection();
try
{
Class.forName(d.getDriver());
con = DriverManager.getConnection(d.getUrl() + d.getDb(), d.getUser(), d.getPass());
try
{
PreparedStatement st = con.prepareStatement("INSERT INTO kundetabell(Fornavn, Etternavn, FDato, Telefon, landskode_land) VALUES(?, ?, ?, ?, ?)");
st.setString(1, fornavn);
st.setString(2, etternavn);
st.setInt(3, fdato);
st.setString(4, tlf);
st.setString(5, nasjonalitet);
st.executeUpdate();
st.close();
con.close();
}
catch (SQLException s)
{
Logger.getLogger(BekreftNyBruker.class.getName()).log(Level.SEVERE, null, s);
}
}
catch (Exception e)
{
Logger.getLogger(BekreftNyBruker.class.getName()).log(Level.SEVERE, null, e);
}
hentKortInfo(fornavn, etternavn, fdato, tlf, kortTyper, nasjonalitet, startDato, sluttDato);
}
public static void hentKortInfo(String fornavn, String etternavn, int fdato, String tlf, String kortTyper, String nasjonalitet, int startDato, int sluttDato)
{
Connection con = null;
DatabaseConnection d = new DatabaseConnection();
try
{
Class.forName(d.getDriver());
con = DriverManager.getConnection(d.getUrl() + d.getDb(), d.getUser(), d.getPass());
try
{
PreparedStatement state = con.prepareStatement("SELECT Klipp, TypeNr FROM billettypetabell WHERE Billettnavn = ?");
state.setString(1, kortTyper);
ResultSet rs = state.executeQuery();
int antallKlipp = 0;
int typeNr = 0;
while(rs.next())
{
antallKlipp = rs.getInt("Klipp");
typeNr = rs.getInt("TypeNr");
}
state.close();
rs.close();
con.close();
hentKundeNr(fornavn, etternavn, fdato, tlf, kortTyper, nasjonalitet, startDato, sluttDato, antallKlipp, typeNr);
}
catch (SQLException s)
{
System.out.println("Feil3");
}
}
catch (Exception e)
{
System.out.println(e);
}
}
public static void hentKundeNr(String fornavn, String etternavn, int fdato, String tlf, String kortTyper, String nasjonalitet, int startDato, int sluttDato, int antallKlipp, int typeNr)
{
Connection con = null;
DatabaseConnection d = new DatabaseConnection();
try
{
Class.forName(d.getDriver());
con = DriverManager.getConnection(d.getUrl() + d.getDb(), d.getUser(), d.getPass());
try
{
PreparedStatement stat = con.prepareStatement("SELECT KundeNr FROM kundetabell WHERE Fornavn = ? AND Etternavn = ? AND FDato = ? AND Telefon = ? AND landskode_Land = ?");
stat.setString(1, fornavn);
stat.setString(2, etternavn);
stat.setInt(3, fdato);
stat.setString(4, tlf);
stat.setString(5, nasjonalitet);
ResultSet res = stat.executeQuery();
int kundeNr = 0;
while(res.next())
{
kundeNr = res.getInt("KundeNr");
}
stat.close();
res.close();
con.close();
settInnkort(fornavn, etternavn, fdato, tlf, kortTyper, nasjonalitet, startDato, sluttDato, antallKlipp, typeNr, kundeNr);
}
catch (SQLException s)
{
Logger.getLogger(BekreftNyBruker.class.getName()).log(Level.SEVERE, null, s);
}
}
catch (Exception e)
{
Logger.getLogger(BekreftNyBruker.class.getName()).log(Level.SEVERE, null, e);
}
}
public static void settInnkort(String fornavn, String etternavn, int fdato, String tlf, String kortTyper, String nasjonalitet, int startDato, int sluttDato, int antallKlipp, int typeNr, int kundeNr)
{
Connection con = null;
DatabaseConnection d = new DatabaseConnection();
try
{
Class.forName(d.getDriver());
con = DriverManager.getConnection(d.getUrl() + d.getDb(), d.getUser(), d.getPass());
try
{
PreparedStatement stmt = con.prepareStatement("INSERT INTO korttabell(StartDato, SluttDato, AntallKlipp, BillettypeTabell_TypeNr, Kundetabell_KundeNr)" +
"VALUES(?, ?, ?, ?, ?)");
stmt.setInt(1, startDato );
stmt.setInt(2, sluttDato );
stmt.setInt(3, antallKlipp );
stmt.setInt(4, typeNr );
stmt.setInt(5, kundeNr );
stmt.executeUpdate();
hentKundeNr(fornavn, etternavn, kortTyper, startDato, sluttDato, antallKlipp, typeNr, kundeNr);
stmt.close();
con.close();
}
catch (SQLException s)
{
Logger.getLogger(BekreftNyBruker.class.getName()).log(Level.SEVERE, null, s);
}
}
catch (Exception e)
{
Logger.getLogger(BekreftNyBruker.class.getName()).log(Level.SEVERE, null, e);
}
}
public static void hentKundeNr(String fornavn, String etternavn, String kortType, int startDato, int sluttDato, int antallKlipp, int typeNr,int kundeNr)
{
Connection con = null;
DatabaseConnection d = new DatabaseConnection();
try
{
Class.forName(d.getDriver());
con = DriverManager.getConnection(d.getUrl() + d.getDb(), d.getUser(), d.getPass());
try
{
PreparedStatement st = con.prepareStatement("SELECT KortNr FROM korttabell WHERE StartDato = ? AND SluttDato = ? AND "
+ "AntallKlipp = ? AND billettypetabell_TypeNr = ? AND kundetabell_KundeNr = ?");
st.setInt(1, startDato);
st.setInt(2, sluttDato);
st.setInt(3, antallKlipp);
st.setInt(4, typeNr);
st.setInt(5, kundeNr);
ResultSet rs = st.executeQuery();
int kortNr = 0;
while(rs.next())
{
kortNr = rs.getInt("KortNr");
}
st.close();
rs.close();
con.close();
Salgsvindu s = new Salgsvindu();
s.registrertNyB(fornavn, etternavn, kortType, kortNr, kundeNr);
}
catch (SQLException s)
{
Logger.getLogger(BekreftNyBruker.class.getName()).log(Level.SEVERE, null, s);
}
}
catch (Exception e)
{
Logger.getLogger(BekreftNyBruker.class.getName()).log(Level.SEVERE, null, e);
}
}
}
堆栈跟踪
May 11, 2013 10:28:54 PM skisenter.BekreftNyBruker hentKundeNr
SEVERE: null
java.lang.NullPointerException
at skisenter.Salgsvindu.registrertNyB(Salgsvindu.java:312)
at skisenter.BekreftNyBruker.hentKundeNr(BekreftNyBruker.java:334)
at skisenter.BekreftNyBruker.settInnkort(BekreftNyBruker.java:283)
at skisenter.BekreftNyBruker.hentKundeNr(BekreftNyBruker.java:241)
at skisenter.BekreftNyBruker.hentKortInfo(BekreftNyBruker.java:189)
at skisenter.BekreftNyBruker.nyBruker(BekreftNyBruker.java:151)
at skisenter.BekreftNyBruker.finnesBruker(BekreftNyBruker.java:88)
at skisenter.BekreftNyBruker.bekreft(BekreftNyBruker.java:35)
at skisenter.Salgsvindu.jtfNyBrukerTilString(Salgsvindu.java:261)
at skisenter.Salgsvindu.actionPerformed(Salgsvindu.java:523)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6382)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3275)
at java.awt.Component.processEvent(Component.java:6147)
at java.awt.Container.processEvent(Container.java:2083)
at java.awt.Component.dispatchEventImpl(Component.java:4744)
at java.awt.Container.dispatchEventImpl(Container.java:2141)
at java.awt.Component.dispatchEvent(Component.java:4572)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4619)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4280)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4210)
at java.awt.Container.dispatchEventImpl(Container.java:2127)
at java.awt.Window.dispatchEventImpl(Window.java:2489)
at java.awt.Component.dispatchEvent(Component.java:4572)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:710)
at java.awt.EventQueue.access$400(EventQueue.java:82)
at java.awt.EventQueue$2.run(EventQueue.java:669)
at java.awt.EventQueue$2.run(EventQueue.java:667)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$3.run(EventQueue.java:683)
at java.awt.EventQueue$3.run(EventQueue.java:681)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:680)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)