私はプログラムを作成しました.2つのテキストフィールドと2つのボタンを持つログインウィンドウです。この段階のactionPerformedメソッドは、テスト目的です。Jpanel UI main()メソッド
私の問題は、すべてのコンポーネントをコンストラクタに入れて、プログラムを実行するためにmain()メソッドを書く方法がわからない、クラスの参照を取得するようなものを試したところ、可視性を設定しますが、どれも機能しません。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
public class LoginUI extends JFrame implements ActionListener
{
JTextField Tusername;
JTextField Tpassword;
JButton Login = new JButton("Login");
JButton register = new JButton("Register");
JLabel passwordLabel = new JLabel("Password");
JLabel userLabel = new JLabel("User");
public String username;
public String password;
public LoginUI()
{
JFrame frame = new JFrame("Login or register");
JPanel Panel = new JPanel();
frame.add(Panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Login.setBounds(10, 80, 80, 25);
Panel.add(Login);
Login.addActionListener(this);
register.setBounds(180, 80, 80, 25);
Panel.add(register);
register.addActionListener(this);
Panel.setLayout(null);
JLabel userLabel = new JLabel("User");
userLabel.setBounds(10, 10, 80, 25);
Panel.add(userLabel);
Tusername = new JTextField(20);
Tusername.setBounds(100, 10, 160, 25);
Panel.add(Tusername);
JLabel passwordLabel = new JLabel("Password");
passwordLabel.setBounds(10, 40, 80, 25);
Panel.add(passwordLabel);
Tpassword = new JPasswordField(20);
Tpassword.setBounds(100, 40, 160, 25);
Panel.add(Tpassword);
}
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == Login)
{
String username = Tusername.getText();
System.out.println(username);
}
else if (e.getSource() == register)
{
String password = Tpassword.getText();
System.out.println(password);
}
}
public static void main(String args[])
{
}}
1)Java GUIは、異なるロケールで異なるPLAFを使用する異なるOS、画面サイズ、画面解像度などで動作する必要があります。したがって、ピクセルの完全なレイアウトには役立ちません。代わりに、レイアウトマネージャや[それらの組み合わせ](http://stackoverflow.com/a/5630271/418556)と[空白](http://stackoverflow.com/a/17874718/)のレイアウトパディングとボーダーを使用してください。 418556)。 2)一般的なJava命名法(命名規則 - 例えば 'EachWordUpperCaseClass'、' firstWordLowerCaseMethod() '、' firstWordLowerCaseAttribute'が 'UPPER_CASE_CONSTANT'以外の場合)を学び、それを一貫して使用してください。 –