前提
javaのawt, swingを使用して、ログイン画面を作成しています。
タイトルにもある通り、Layoutがうまくいかず、詰まってしまいました。
実現したいこと
logoの下に、ID・PASSWORDの入力フォームが表示されるようにしたい。
発生している問題
logoの下に、ID・PASSWORDの入力フォームが表示したいが、何も出てこない状態。
試したこと
import java.awt.BorderLayout; import java.awt.CardLayout; import java.awt.Container; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; public class Test2 extends JFrame { CardLayout main_l_card; JLabel order_lb_info; public Test2() { this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setTitle("ログイン画面"); this.setSize(800,500); this.setLayout(new BorderLayout()); add(new Login()); setVisible(true); } class Login extends JPanel { Login() { //ロゴ JLabel logo = new JLabel(new ImageIcon("./res/main.png")); this.add(logo, BorderLayout.NORTH); JPanel info = new JPanel(); info.setLayout(new GridLayout(1,4)); //入力フォーム1 info.add(new JLabel("ID")); JTextField id = new JTextField("", 10); info.add(id); //入力フォーム2 info.add(new JLabel("PASSWORD")); JPasswordField pw = new JPasswordField("",10); info.add(pw); setVisible(true); } } public static void main(String[] args) { new Test2(); } }
GridLayoutや、BorderLayoutなどいろいろ変えて試してみましたが、並列に表示されてしまったりと、うまくいきませんでした。
補足情報(FW/ツールのバージョンなど)
java SE 1.8を使用。
変更後
入力のフォームは表示されるようになったが、logoの下には表示されない。
import java.awt.BorderLayout; import java.awt.CardLayout; import java.awt.Container; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; public class Test2 extends JFrame { CardLayout main_l_card; JLabel order_lb_info; public Test2() { this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setTitle("ログイン画面"); this.setSize(800,500); this.setLayout(new BorderLayout()); add(new Login()); setVisible(true); } class Login extends JPanel { Login() { //ロゴ JLabel logo = new JLabel(new ImageIcon("./res/main.png")); this.add(logo, BorderLayout.NORTH); JPanel info = new JPanel(); info.setLayout(new GridLayout(1,5)); this.add(info, BorderLayout.CENTER); //追加 //1 info.add(new JLabel("ID")); //2 JTextField id = new JTextField("", 10); info.add(id); //3 info.add(new JLabel("PASSWORD")); //4 JPasswordField pw = new JPasswordField("",10); info.add(pw); //5 //Button追加予定 setVisible(true); } } public static void main(String[] args) { new Test2(); } }

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/11/15 09:03
2022/11/15 10:08
2022/11/15 10:32
2022/11/15 11:22 編集
2022/11/15 12:18
2022/11/15 12:45
2022/11/15 12:54
2022/11/15 13:31
2022/11/16 08:28