プライベート文字列のユーザー名が null を返すのを助けてください!
さて、usernameID と呼ばれる JTextField と submit と呼ばれるボタンを含む JFrame ウィンドウを作成しました。submit がクリックされると、プライベート文字列 username を usernameID.getText() に等しく設定する setUsername() メソッドを呼び出す actionlistener が呼び出されます。設定されました。
したがって、私の getUsername() は変数ユーザー名を返しますが、それが返されると、返される値は null です。私には何か問題があると思います。setUsername メソッドでユーザー名の値を usernameID.getText() に設定します.
getUsername というメソッドが、ユーザーが usernameID に入力したものを返すようにするにはどうすればよいでしょうか。
これが私のコードです:
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class GUI {
private JFrame frame = new JFrame();
private String user;
GUI() {
FlowLayout layout = new FlowLayout();
JLabel usernameText = new JLabel("Username:");
final JTextField usernameID = new JTextField(17);
JButton submit = new JButton("Submit");
frame.setTitle("Enter username");
frame.setVisible(true);
frame.setLocationRelativeTo(null);
frame.setSize(300, 100);
frame.setAlwaysOnTop(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.requestFocus();
frame.setLayout(layout);
frame.add(usernameText);
frame.add(usernameID);
frame.add(submit);
submit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
setUsername(usernameID.getText());
frame.setVisible(false);
frame.dispose();
}
});
}
private void setUsername(String text) {
user = text;
}
String getUsername() {
return user;
}
}
これはそれを呼び出すクラスです。
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.state.BasicGameState;
import org.newdawn.slick.state.StateBasedGame;
public class Play extends BasicGameState {
public Play(int state) {
}
@Override
public void init(GameContainer gc, StateBasedGame sbg)
throws SlickException {
gc.setShowFPS(false);
@SuppressWarnings("unused")
Player player = new Player(getName(), 100, 100);
}
private String getName() {
GUI gui = new GUI();
System.out.println("Username: "+gui.getUsername());
return gui.getUsername();
}
@Override
public void render(GameContainer gc, StateBasedGame sbg, Graphics g)
throws SlickException {
}
@Override
public void update(GameContainer gc, StateBasedGame sbg, int delta)
throws SlickException {
}
@Override
public int getID() {
// TODO Auto-generated method stub
return 1;
}
}