当前位置: 首页 > 知识库问答 >
问题:

将JButton放在JPanel内JLabel的顶部

段渊
2023-03-14

我有JPanel,它包含:

JButton和JLabel,其中设置了图片

我想把按钮放在JLabel顶部的北中心位置。目前它的设置彼此相邻,我不知道如何覆盖JLabel。

我在这里尝试了许多解决方案,但是它似乎并不完全按照我想要的方式工作。谢谢!

JLabel picLabel = new JLabel(); // background of the label
picLabel.setIcon(new ImageIcon(CoursesGUI.class.getResource("/images/graph_paper.jpg")));
Button en_course_btn = new JButton("English Course");
coursePanel.add(en_course_btn);
coursePanel.add(picLabel);

更新:按钮放在JLabel的顶部,但不在里面。

共有1个答案

祁景山
2023-03-14

您应该为标签设置布局,并在其中添加按钮:

JPanel setupPanel = new JPanel();
JPanel titlePanel = new JPanel();
JPanel contentPanel = new JPanel();
JPanel coursePanel = new JPanel();

JLabel picLabel = new JLabel(); // background of the label
picLabel.setLayout(new FlowLayout(FlowLayout.CENTER));

picLabel.setIcon(new ImageIcon(CoursesGUI.class.getResource("/images/graph_paper.jpg")));

// picLabel.setLayout(new BorderLayout()); // sets layout inside the label
JButton en_course_btn = new JButton("English Course");

contentPanel.setBackground(Color.GREEN);
titlePanel.setBackground(Color.YELLOW);

// picLabel.setPreferredSize(new Dimension(500, 470)); // dimensions of inner containers
contentPanel.setPreferredSize(new Dimension(1280, 670));
titlePanel.setPreferredSize(new Dimension(1280, 50));

picLabel.add(en_course_btn);
//coursePanel.add(en_course_btn);
coursePanel.add(picLabel);

contentPanel.add(coursePanel); // add coursePanel containing buttons and background
setupPanel.add(titlePanel, BorderLayout.NORTH);
setupPanel.add(contentPanel);
getContentPane().add(setupPanel);
 类似资料:
  • 问题内容: 我正在使用NetBeans GUI构建器来处理我的布局(我对LayoutManagers很糟糕),并试图放置一个简单的JLabel,以使其始终(水平)居于其父JPanel内部。理想情况下,即使调整了JPanel的大小,这也将保持正确,但是,如果这是一个疯狂的编码,比第一次创建JPanel时居中就足够了。 我自己尝试处理布局已经很糟糕了,但是由于NetBeans GUI Builder自

  • 问题内容: 在给定的示例中,我想将文本移动到图像和形状下方。请帮我做。 在此示例中,JLable位于面板顶部。我想将其向下移动到图像/形状。 我尝试了,但是没有用。请告诉我我是否缺少什么。 问题答案: 考虑使用API​​的可用功能… 看一眼: 如何使用标签 例如…

  • 我有一个JFrame,里面装满了JPanel(下面的代码)。 我正在使用JPanel在里面画东西,例如,我可以在任何我喜欢的地方画线,但是当添加JLabel到它的时候,我不能把它移动到它卡住的任何地方 但问题是他们建议的解决方案对我不起作用。 很抱歉,如果我不清楚,我试图在创建Surface之前和之后在函数initUI()中添加上面的内容。 但是在那之后,框架显示几乎(1,1)大小和它的空(如果我

  • 基本上我有两个账户,SSPUserInput和SSPViewer。我想在SSPUserInput类中按下一个按钮,在SSPViewer中更改一个JLabel名称。这基本上是一个石头剪刀布游戏。这是我第一次在这里发帖,如果我做错了什么,我很抱歉。

  • 问题内容: 我试图将一系列JLabel放置在JPanel上的特定X和Y坐标上(并设置其高度和宽度)。无论我做什么,每个标签都会立即跳到上一个标签的右侧,并且具有与所有其他标签完全相同的尺寸。 现在,我的Jpanel位于网格布局中。我尝试了绝对布局(非法参数异常结果),自由设计(没有标签出现),流程布局(所有内容都被压缩到中间)以及其他一些内容。 不知道我需要做些什么才能使这项工作。有人可以帮忙吗?

  • 问题内容: 我需要在否则为空的JPanel的右下角放置一个按钮 我怎么做?应该很容易吧?我想找到正确的布局管理器,而不是使用一系列嵌套面板。 问题答案: 我建议将边框布局管理器与Flow Layout一起使用。 就像是: