0
私は、CardLayoutの1つのパネルに名前を入力し、その入力が次に切り替わる次のパネルでJLabelsテキストを定義するようにしようとしています。私はSystem.out.println(userName)を使用しました。それがテキストをピックアップしていることを再確認してください。それは間違いありませんが、JTextFieldsの入力であるように 'user'テキストを取得する方法はわかりません。以下JTextField入力にラベルテキストを設定する方法
全作業コード:
import java.awt.CardLayout;
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.JPanel;
import javax.swing.JTextField;
public class gameDataPanel {
private JFrame frame = new JFrame("Game Data Input");
private JPanel mainPanel, loginPanel, gameDataPanel;
private JLabel playerName, user;
private JTextField playerNameInput;
private JButton submit;
private CardLayout gameDataLayout = new CardLayout();
private String userName;
public gameDataPanel() {
mainPanel = new JPanel();
mainPanel.setLayout(gameDataLayout);
playerName = new JLabel("Enter Player Name: ");
playerNameInput = new JTextField(30);
submit = new JButton("Submit");
loginPanel = new JPanel();
loginPanel.add(playerName);
loginPanel.add(playerNameInput);
loginPanel.add(submit);
gameDataPanel = new JPanel();
user = new JLabel();
user.setText(userName);
gameDataPanel.add(user);
mainPanel.add(loginPanel, "1");
mainPanel.add(gameDataPanel, "2");
gameDataLayout.show(mainPanel, "1");
submit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
userName = playerNameInput.getText();
gameDataLayout.show(mainPanel, "2");
System.out.println(userName);
}
});
playerNameInput.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
userName = playerNameInput.getText();
gameDataLayout.show(mainPanel, "2");
System.out.println(userName);
}
});
frame.add(mainPanel);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
}
public static void main(String[] args) {
gameDataPanel gd = new gameDataPanel();
}
}
おかげ
役に立てば幸い
、どうもありがとうございました。このような何かを試してみてください。それがActionListenerの外で動作しない理由を説明してもらえますか?おかげで – SkyPlus
それは因果関係の問題です: "gameDataPanel"クラスのインスタンスを作成すると、ウィンドウが現れ、そのコンストラクタが実行されます。さらに、イベントリスナーは登録されていますが、まだ実行されていません。ユーザー名フィールドはまだ空です。ユーザーが何らかのデータを入力してボタンを押すと、イベントリスナーコードが実行され、テキストフィールドからユーザー名が読み取られます。 –