gpt4 book ai didi

java - 哪个布局管理器适合我的设计?

转载 作者:行者123 更新时间:2023-12-05 09:23:02 26 4
gpt4 key购买 nike

我是 Java 的初学者。我需要 Swings 中的一些帮助来定位我的组件。

我无法决定我应该使用哪个布局管理器来按以下顺序放置我的组件

+-----------------------------------+
| |
| Username Text Field |
| Password Password Field |
| |
| Submit button |
| |
+-----------------------------------+

下面是我的代码

    package ssst;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

class Test implements ActionListener{



JButton submit;
JFrame j;
JFrame jf;

public Test()
{
j = new JFrame("PLAIN");
j.setBounds(500,150,300,400);

JPanel panel = new JPanel();
j.add(panel);
GridBagLayout gb = new GridBagLayout();
panel.setLayout(gb);


GridBagConstraints c = new GridBagConstraints();



JLabel label = new JLabel("User Name");
c.gridx=0;
c.gridy=0;
c.fill=GridBagConstraints.HORIZONTAL;
c.anchor=GridBagConstraints.WEST;
c.ipadx=5;
c.ipady=5;
c.insets= new Insets(7,7,7,7);

panel.add(label,c);

JTextField username = new JTextField(10);

c.gridx=1;
c.gridy=0;

c.fill=GridBagConstraints.HORIZONTAL;
c.anchor=GridBagConstraints.WEST;
c.ipadx=5;
c.insets= new Insets(7,7,7,7);

panel.add(username,c);

JLabel password= new JLabel("Password");
c.gridx=0;
c.gridy=1;
c.fill=GridBagConstraints.HORIZONTAL;
c.anchor=GridBagConstraints.WEST;
c.ipadx=5;
c.insets= new Insets(7,7,7,7);

panel.add(password,c);

JPasswordField pass = new JPasswordField(10);
c.gridx=1;
c.gridy=1;
c.fill=GridBagConstraints.HORIZONTAL;
c.anchor=GridBagConstraints.WEST;
c.insets= new Insets(7,7,7,7);

panel.add(pass,c);

submit = new JButton("Submit");
c.gridx=1;
c.gridy=6;
c.fill=GridBagConstraints.HORIZONTAL;
c.anchor=GridBagConstraints.WEST;
c.insets= new Insets(7,7,7,7);

panel.add(submit,c);

submit.addActionListener(this);
j.setVisible(true);
j.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}


public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub

j.setVisible(false);
jf = new JFrame("NEw Window");
jf.setVisible(true);
jf.setBounds(500,150,300,400);
JPanel panel2 = new JPanel();
panel2.setLayout(null);
jf.add(panel2);

JButton logout = new JButton("LOGOUT");
logout.setBounds(100, 30, 400, 30);
panel2.add(logout);
logout.addActionListener(new Test2());
jf.setDefaultCloseOperation(j.EXIT_ON_CLOSE);



}


class Test2 implements ActionListener{
public void actionPerformed(ActionEvent e) {

jf.dispose();
j.setVisible(true);

}


}


public static void main(String args[])
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{

new Test();

}

}

);


}




}

最佳答案

您可以使用 GridBagLayoutJOptionPane

enter image description here

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class LoginPane extends JPanel {

private JTextField userName;
private JPasswordField password;

public LoginPane() {
setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 0;
gbc.anchor = GridBagConstraints.EAST;
gbc.insets = new Insets(4, 4, 4, 4);
add(new JLabel("Username:"), gbc);
gbc.gridy++;
add(new JLabel("Password:"), gbc);

userName = new JTextField(10);
password = new JPasswordField(10);

gbc.gridx = 1;
gbc.gridy = 0;
gbc.anchor = GridBagConstraints.WEST;
gbc.fill = GridBagConstraints.HORIZONTAL;
add(userName, gbc);
gbc.gridy++;
add(password, gbc);
}

public String getUsername() {
return userName.getText();
}

public char[] getPassword() {
return password.getPassword();
}

public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
}

LoginPane loginPane = new LoginPane();
int option = JOptionPane.showOptionDialog(
null,
loginPane,
"Login",
JOptionPane.OK_CANCEL_OPTION,
JOptionPane.PLAIN_MESSAGE,
null,
new Object[]{"Submit"},
"Submit");
if (option == 0) {
System.out.println("Happy");
}

}
});
}
}

您也可以将 GridLayout 用于此概念。

看看http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html获取更多想法和与其他布局管理器的链接

关于java - 哪个布局管理器适合我的设计?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24320436/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com