我正在使用NetBeans GUI构建器来处理我的布局(我对LayoutManagers很糟糕),并试图放置一个简单的JLabel,以使其始终(水平)居于其父JPanel内部。理想情况下,即使调整了JPanel的大小,这也将保持正确,但是,如果这是一个疯狂的编码,比第一次创建JPanel时居中就足够了。
我自己尝试处理布局已经很糟糕了,但是由于NetBeans GUI Builder自动生成不可变的代码,因此我无法弄清楚如何进行居中,而且我也无法在线找到任何东西来帮助我。
感谢任何能够指引我正确方向的人!
以下是使组件居中的四种方法:
import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;
class CenterComponent {
public static JLabel getLabel(String text) {
return getLabel(text, SwingConstants.LEFT);
}
public static JLabel getLabel(String text, int alignment) {
JLabel l = new JLabel(text, alignment);
l.setBorder(new LineBorder(Color.RED, 2));
return l;
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JPanel p = new JPanel(new GridLayout(2,2,4,4));
p.setBackground(Color.black);
p.setBorder(new EmptyBorder(4,4,4,4));
JPanel border = new JPanel(new BorderLayout());
border.add(getLabel(
"Border", SwingConstants.CENTER), BorderLayout.CENTER);
p.add(border);
JPanel gridbag = new JPanel(new GridBagLayout());
gridbag.add(getLabel("GridBag"));
p.add(gridbag);
JPanel grid = new JPanel(new GridLayout());
grid.add(getLabel("Grid", SwingConstants.CENTER));
p.add(grid);
// from @0verbose
JPanel box = new JPanel();
box.setLayout(new BoxLayout(box, BoxLayout.X_AXIS ));
box.add(Box.createHorizontalGlue());
box.add(getLabel("Box"));
box.add(Box.createHorizontalGlue());
p.add(box);
JFrame f = new JFrame("Streeeetch me..");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setContentPane(p);
f.pack();
f.setLocationByPlatform(true);
f.setVisible(true);
}
});
}
}
我有JPanel,它包含: JButton和JLabel,其中设置了图片 我想把按钮放在JLabel顶部的北中心位置。目前它的设置彼此相邻,我不知道如何覆盖JLabel。 我在这里尝试了许多解决方案,但是它似乎并不完全按照我想要的方式工作。谢谢! 更新:按钮放在JLabel的顶部,但不在里面。
问题内容: 在给定的示例中,我想将文本移动到图像和形状下方。请帮我做。 在此示例中,JLable位于面板顶部。我想将其向下移动到图像/形状。 我尝试了,但是没有用。请告诉我我是否缺少什么。 问题答案: 考虑使用API的可用功能… 看一眼: 如何使用标签 例如…
问题内容: 我试图将一系列JLabel放置在JPanel上的特定X和Y坐标上(并设置其高度和宽度)。无论我做什么,每个标签都会立即跳到上一个标签的右侧,并且具有与所有其他标签完全相同的尺寸。 现在,我的Jpanel位于网格布局中。我尝试了绝对布局(非法参数异常结果),自由设计(没有标签出现),流程布局(所有内容都被压缩到中间)以及其他一些内容。 不知道我需要做些什么才能使这项工作。有人可以帮忙吗?
我在向JPanel添加图形时遇到了问题。如果我从panel.add(new graphics())中更改行;添加(new graphics());并且不将JPanel添加到JFrame,黑色矩形将出现在JFrame上。我只是不能让黑色矩形出现在JPannel上,想知道是否有人能帮我做这件事。
问题内容: 尽管进行了许多尝试,但我仍无法获得我想要看到的结果- 文本在JLabel内居中,而JLabel则在BorderLayout中居中。我说“有点”是因为在窗口的右下角还应该有另一个标签“状态”。这是负责的代码: 感谢您提供的任何帮助。 问题答案:
我试图让一些jLabel在按下GridLayout键的JPanel上彼此交换位置。 到目前为止: 1。我只能让他们对鼠标点击做出反应 2。他们只能在其上方和左侧的位置进行切换。 注: 1。如果我设置movePlayer(1),它会工作。并从网格(8,7)切换一个带有玩家图像的JLabel,其中一个JLabel上面有一个地板图像。然而,我的问题是,当我设置movePlayer(2)时,它会给我和索引