gpt4 book ai didi

java - JPanel 上 JLabel 的定位

转载 作者:行者123 更新时间:2023-11-30 03:12:11 24 4
gpt4 key购买 nike

我正在手动编写 GUI,但在 JPanel 上定位 JLabel 时遇到了困难。我试图将其放在 JTextField 上方的左上角,但即使我设置了边界,它也默认位于中间:

相关代码:

JPanel mainPanel = new JPanel();

JLabel myFleetLabel = new JLabel("My Fleet");
myFleetLabel.setBounds(1,1, 10, 10);

mainPanel.add(myFleetLabel);

add(mainPanel);

它看起来像这样: gui screenshot

最佳答案

有几种方法可以实现此目的,例如,一种可能是使用 GridBagLayout 作为主要布局管理器

GridBagLayout

import java.awt.EventQueue;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class Test {

public static void main(String[] args) {
new Test();
}

public Test() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
}

JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new TestPane());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}

public class TestPane extends JPanel {

public TestPane() {
setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 0;
gbc.anchor = GridBagConstraints.NORTHWEST;
JLabel label = new JLabel("My Fleet: ");
add(label, gbc);

JTextArea ta = new JTextArea(10, 20);
gbc.gridx++;
add(new JScrollPane(ta), gbc);

gbc.gridx = 0;
gbc.gridy++;
gbc.gridwidth = 2;
gbc.fill = GridBagConstraints.HORIZONTAL;
add(new JScrollPane(new JTextArea(5, 10)), gbc);

JPanel actions = new JPanel();
actions.add(new JButton("Create Ship"));
actions.add(new JButton("Flip Coins"));

gbc.gridy++;
add(actions, gbc);
}

}

}

参见Laying Out Components Within a ContainerHow to Use GridBagLayout了解更多详情。

请记住,单个布局管理器不太可能解决您的所有问题,有时您需要使用两个或多个布局管理器来完成整体效果

关于java - JPanel 上 JLabel 的定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33401983/

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