これはおそらくかなりばかげた問題ですが、私は gridbag レイアウトをいじっていて、ユーザー情報を mysql DB でチェックする別のクラスに送信する基本的なログイン画面を作成しようとしています。しかし、それを行う前に、ログイン ボタンが押されたことをリッスンし、テキスト フィールドからテキストを取得する方法を見つける必要があります (この最後の部分で問題が発生しています)。addComponentsToPane メソッドの外で JTextField を宣言しようとしましたが、役に立ちませんでした。
ここに私のコードがあります
また、私はこのサイトに不慣れで、コードを正しくフォーマットするのに十分な知識がありません。
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package GUI;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
/**
*
* @author TeslaSolari
*/
public class login {
public void login() {
createAndShowGUI();
}
private static void createAndShowGUI() {
//Create and setup the windows
JFrame frame = new JFrame("Login");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Setup the content pane
addComponentsToPane(frame.getContentPane());
//Display the window
frame.pack();
frame.setVisible(true);
}
public static void addComponentsToPane(Container pane) {
pane.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
//parts
JButton login;
JTextField user;
JLabel[] label = new JLabel[10];
JPasswordField pass;
ActionListener loginB = null;
pane.setLayout(new GridBagLayout());
//Cpnstraints
GridBagConstraints c = new GridBagConstraints();
c.fill = GridBagConstraints.CENTER;
// Buttons
login = new JButton("Login");
c.weightx = 0.5;
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 0;
c.gridy = 4;
pane.add(login, c);
login.addActionListener(new Action());
// textfields / labels
label[0] = new JLabel("Username");
user = new JTextField();
c.weightx = 0.5;
c.gridx = 0;
c.gridy = 0;
pane.add(label[0], c);
c.weightx = 0.5;
c.gridx = 0;
c.gridy = 1;
pane.add(user, c);
label[1] = new JLabel("Password");
pass = new JPasswordField();
c.weightx = 0.5;
c.gridx = 0;
c.gridy = 2;
pane.add(label[1], c);
c.weightx = 0.5;
c.gridx = 0;
c.gridy = 3;
pane.add(pass, c);
}
//Actions
static class Action implements ActionListener{
public void actionPerformed (ActionEvent e){
System.out.println(label[]);
}
}
}