gpt4 book ai didi

java - JLabel 没有在 JTabbedPane 上移动?

转载 作者:行者123 更新时间:2023-12-02 06:06:14 25 4
gpt4 key购买 nike

我意识到这个问题之前已经被问过(好几次),并且我已经尝试了在网上找到的所有提示,但没有成功!也许 JTabbedPane 与它有关?无论如何,这是我编写的代码(最小工作示例):

public class Main extends JPanel {

public Main() {
super(new GridLayout(1, 1));

JTabbedPane tabbedPane = new JTabbedPane();
ImageIcon icon = createImageIcon("");



for(int i=0; i< 5; i++)
{
JFrame frame = new JFrame();
JPanel panel = new JPanel();
panel.setLayout(new FlowLayout());

tabbedPane.addTab("Irrelevant " +(i+1), icon, panel,
"Hi " + (i+1) + " String");
tabbedPane.setMnemonicAt(0, KeyEvent.VK_1);

JLabel label0 = new JLabel("Title of Pane " + (i+1));
panel.add(label0);

String[] irrelevantArray = {"hi","sup", "bye"};
for(String s: irrelevantArray)
{

JLabel label = new JLabel(s.toString());
panel.add(label);
label.setLocation(0,100);
}

add(tabbedPane);
tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
}
}


protected JComponent makeTextPanel(String text) {
JPanel panel = new JPanel(false);
JLabel filler = new JLabel(text);
filler.setHorizontalAlignment(JLabel.CENTER);
panel.setLayout(new GridLayout(1, 1));
panel.add(filler);
return panel;
}

protected static ImageIcon createImageIcon(String path) {
java.net.URL imgURL = Main.class.getResource(path);
if (imgURL != null) {
return new ImageIcon(imgURL);
} else {
System.err.println("Couldn't find file: " + path);
return null;
}
}

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

frame.add(new Main(), BorderLayout.CENTER);

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

public static void main(String[] args) {

SwingUtilities.invokeLater(new Runnable()
{
public void run() {
UIManager.put("swing.boldMetal", Boolean.FALSE);
createAndShowGUI();
}
}
);
}
}

当然,这样做的问题是,即使我将标签设置在某个(任意)位置,它也不会移动!它很简单,将标签放在顶部居中并从左到右排列。我已经尝试了我遇到的一切,但没有成功。我该如何纠正这个问题?

谢谢!

最佳答案

你的代码没有意义:

  1. 为什么需要一个循环来创建 5 个相同的 JFrame?
  2. 为什么要尝试在同一位置添加多个标签?

您不应该尝试设置组件的位置。 Swing 被设计为与布局管理器一起使用。阅读 Swing 教程中关于 Using Layout Managers 的部分用于工作示例。您还可以嵌套具有不同布局的面板以获得所需的效果。这些示例还将使您更好地了解如何构建代码。

例如,也许您可​​以使用 BoxLayout。它允许您添加strut和glue组件,这将帮助您将组件对齐在一条线上。

when I take the layout manager out, the labels don't even show

那是因为布局管理器比你想象的要多。他们管理组件的大小和位置。然后管理父容器的首选大小。他们在幕后做了大量工作以确保 GUI 正常工作。

关于java - JLabel 没有在 JTabbedPane 上移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22271089/

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