gpt4 book ai didi

java - 将按钮和文本放在新行上并将它们移动到 java 中的屏幕底部

转载 作者:行者123 更新时间:2023-11-29 10:02:33 25 4
gpt4 key购买 nike

我最近开始进行 Java 编程,并且正在尝试创建一个登录屏幕。但是,我不知道如何创建一个新行来放置我的按钮和文本。另外,我想将它们移动到 JPanel 的右下角。对于我的措辞不佳,我深表歉意,希望您能从我的代码中明白我的意思。请提供帮助并提前致谢。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class CardLayoutDemo implements ItemListener {
JPanel cards;
final static String BUTTONPANEL = "Card with JButtons";

public void addComponentToPane(Container pane) {

JPanel card1 = new JPanel();
card1.add(new JLabel("Username:"));
card1.add(new JTextField("Username", 10));
card1.add(new JButton("Login")); //end line here
//New line
card1.add(new JLabel("Password:"));
card1.add(new JTextField("Password", 10));
card1.add(new JButton("Register")); //end line here
//New line
card1.add(new JCheckBox());
card1.add(new JLabel("Remember credentials"));


cards = new JPanel(new CardLayout());
cards.add(card1, BUTTONPANEL);

pane.add(cards, BorderLayout.BOTTOM_RIGHT);// Add cards to bottom right hand corner.
}

public void itemStateChanged(ItemEvent evt) {
CardLayout cl = (CardLayout)(cards.getLayout());
cl.show(cards, (String)evt.getItem());
}

private static void createAndShowGUI() {
JFrame frame = new JFrame("Login");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

CardLayoutDemo demo = new CardLayoutDemo();
demo.addComponentToPane(frame.getContentPane());

frame.pack();
frame.setVisible(true);
}

public static void main(String[] args) {

try {

UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
} catch (UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
} catch (IllegalAccessException ex) {
ex.printStackTrace();
} catch (InstantiationException ex) {
ex.printStackTrace();
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
}

UIManager.put("swing.boldMetal", Boolean.FALSE);

javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}

最佳答案

如图here ,您可以定位您的 top-level container在屏幕的右下方。用您自己的组件替换 getPreferredSize() 中提到的占位符。另外,考虑一个 JToolBar ,它可以在许多实现上 float 。

附录:我想将按钮移动到 JPanel 的右下角,不移动 JPanel 到屏幕底部。

为您的 card1 指定 FlowLayout.RIGHT 会产生显示的结果。在内容 Pane 的 BorderLayout.CENTER 中用 CardLayout 替换您的面板。

image

public void addComponentToPane(Container pane) {

JPanel card1 = new JPanel(new FlowLayout(FlowLayout.RIGHT));

pane.add(new JPanel() {
@Override // placeholder for actual content
public Dimension getPreferredSize() {
return new Dimension(800, 200);
}
}, BorderLayout.CENTER);
pane.add(cards, BorderLayout.PAGE_END);
}

附录:这是对您的示例的更新。

public void addComponentToPane(Container pane) {

pane.add(cards, BorderLayout.PAGE_END);
}

private static void createAndShowGUI() {
JFrame frame = new JFrame("Login");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

// Move frame to lower right corner of screen
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice defaultScreen = ge.getDefaultScreenDevice();
Rectangle rect = defaultScreen.getDefaultConfiguration().getBounds();
int x = (int) rect.getMaxX() - frame.getWidth();
int y = (int) rect.getMaxY() - frame.getHeight();
frame.setLocation(x, y);

CardLayoutDemo demo = new CardLayoutDemo();
demo.addComponentToPane(frame.getContentPane());

frame.pack();
frame.setVisible(true);
}

关于java - 将按钮和文本放在新行上并将它们移动到 java 中的屏幕底部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19620514/

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