gpt4 book ai didi

java - 在 java jframe 中结束行并继续

转载 作者:行者123 更新时间:2023-12-01 13:54:02 26 4
gpt4 key购买 nike

我创建了这个脚本。我的问题是我想结束一行并继续下一行。我在这段特定的代码中使用了 flowlayout,并尝试了其他布局,例如网格,但没有成功。请帮助,非常感谢示例并提前感谢您。这是我的代码:

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(new FlowLayout(FlowLayout.RIGHT));
card1.add(new JLabel("Username:"));
card1.add(new JTextField("Username", 10));
card1.add(new JButton("Login")); //end line here

card1.add(new JLabel("Password:"));
card1.add(new JTextField("Password", 10));
card1.add(new JButton("Register")); //end line here

card1.add(new JCheckBox());
card1.add(new JLabel("Remember credentials"));

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

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

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();
ImageIcon img = new ImageIcon("C:\\Users\\********\\Pictures\\settings-file-icon-2.png");
frame.setIconImage(img.getImage());
frame.setSize(850, 650);
frame.setLocationRelativeTo(null);
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();
}
});
}

}

这就是 jframe 当前的样子:Current screen

这就是我希望它看起来像的样子:Screen edit

最佳答案

正如我之前在您的 previous same question 中发布的那样您几分钟前删除的:

我猜测您对 GUI 底部的组件布局不满意。如果是这样,那么您将需要更改布局管理器的使用。考虑嵌套 JPanel,每个 JPanel 使用自己的布局管理器,并通过这样做使用简单的布局管理器创建复杂的 GUI。或者,如果您喜欢冒险,请尝试使用 GridBagLayout 为您的用户输入组件创建网格。再次查看您的代码,也许 GridBagLayout 将是您最好的选择。如果这样做,您的 JLabels 可以定位在 [0, 0] 和 [0, 1] 处,JTextField 可以定位在 [1, 0] 和 [1, 1] 处(分别对应于 gridx 和 gridy 位置的数字)。

您可以在此处阅读布局管理器的使用:

关于java - 在 java jframe 中结束行并继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19735852/

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