Consider the following code
public class sqldetails extends JFrame implements ActionListener{
static String username=null;
static String password=null;
JButton button;
JTextField utext,ptext;
public static void main(String[] args){
new sqldetails();
}
sqldetails() {
this.setTitle("Sql details");
JPanel panel=new JPanel();
panel.setLayout(new GridBagLayout());
JLabel ulabel=new JLabel("Enter your Sql username");
panel.add(ulabel);
addItem(panel,ulabel,0,0,1,1,GridBagConstraints.WEST);
JTextField utext=new JTextField(9);
panel.add(utext);
addItem(panel,utext,1,0,1,1,GridBagConstraints.WEST);
JLabel plabel=new JLabel("Enter your Sql password");
panel.add(plabel);
a开发者_StackOverflowddItem(panel,plabel,0,1,1,1,GridBagConstraints.WEST);
JTextField ptext=new JTextField(9);
panel.add(ptext);
addItem(panel,ptext,1,1,1,1,GridBagConstraints.WEST);
button =new JButton("enter");
button.addActionListener(this);
panel.add(button);
addItem(panel,button,0,2,1,1,GridBagConstraints.CENTER);
this.add(panel);
this.pack();
this.setVisible(true);
}
private void addItem(JPanel panel, JComponent c, int i, int j,
int k, int l, int align) {
GridBagConstraints calc=new GridBagConstraints();
calc.gridx=i;
calc.gridy=j;
calc.gridwidth=k;
calc.gridheight=l;
calc.weightx=100.0;
calc.weighty=100.0;
calc.insets=new Insets(5,5,5,5);
calc.anchor=align;
calc.fill=GridBagConstraints.NONE;
panel.add(c,calc);
}
public void actionPerformed(ActionEvent arg0) {
if(arg0.getSource()==button){
username +=utext.getText();
utext.setText(null);
password +=ptext.getText();
ptext.setText(null);
new sqlconnection();
new gui();
new first();
}
}
However wen i compile it, i get java.lang.NullPointerException in the gettext() line. Help would be appreciated :)
Thats because variables utext and ptext inside constructor sqldetails() shadow the instance variables of the same name
sqldetails() {
.....
// JTextField utext=new JTextField(9); //====> shadows the instance variable utext
this.utext=new JTextField(9); // This is the correct use
panel.add(utext);
addItem(panel,utext,1,0,1,1,GridBagConstraints.WEST);
.......
// JTextField ptext=new JTextField(9); //=====> shadows the instance variable ptext
this.ptext = new JtextField(); // This is the correct use
.......
}
精彩评论