对于我的应用程序,我正在创建一个脚本编辑器。目前,我在一个包含JLabels表示的JPanel中显示了行号。但是,当我添加新的JLabels
来表示新的行号时,JLabels
会出现在面板的中心,即使我设置了JLabels
的SetVerticalAlignment
和SetVerticalTextPosition
。我想要它,以便标签将出现在彼此的下面。
JPanel类构造函数,它包含所有JLabels:
public LineNumberPanel() {
setPreferredSize(new Dimension(width, height));
setLayout(new GridLayout(0, 1));
//setup the label
label = new JLabel(String.valueOf(lineCount));
label.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 15));
//setup the label alignment
label.setVerticalAlignment(JLabel.TOP);
label.setHorizontalAlignment(JLabel.CENTER);
label.setVerticalTextPosition(JLabel.TOP);
setAlignmentY(TOP_ALIGNMENT);
add(label);
}
将JLabels添加到JPanel的方法:
public void increaseLineNumber() {
lineCount++;
JLabel tempLabel = new JLabel(String.valueOf(lineCount));
tempLabel.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 15));
tempLabel.setVerticalAlignment(JLabel.TOP);
tempLabel.setHorizontalAlignment(JLabel.CENTER);
tempLabel.setVerticalTextPosition(JLabel.TOP);
revalidate();
this.add(tempLabel);
}
添加新JLabels时的当前外观:
不要使用GridLayout
。它会拉伸你的部件。如果使用boxlayout
boxlayout
的一个方便类是box
。你可以做
Box box = Box.createVerticalBox();
add(box);
然后只需将标签添加到框
中
box.add(label);
import java.awt.*;
import javax.swing.*;
import javax.swing.border.BevelBorder;
public class BoxLabels {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable(){
public void run() {
Box box = Box.createVerticalBox();
Font font = new Font("monospaced", Font.PLAIN, 11);
JPanel sideBar = new JPanel();
sideBar.setBackground(Color.BLACK);
sideBar.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
sideBar.add(box);
JTextArea text = new JTextArea(15, 50);
text.setMargin(new Insets(5, 5, 5, 5));
text.setBackground(Color.darkGray);
text.setForeground(Color.white);
text.setFont(font);
int count = 1;
for (int i = 0; i < 10; i++) {
JLabel label = new JLabel(String.valueOf(count));
label.setFont(font);
label.setForeground(Color.GREEN);
box.add(label);
count++;
}
JPanel panel = new JPanel(new BorderLayout());
panel.add(text);
panel.add(sideBar, BorderLayout.WEST);
JOptionPane.showMessageDialog(null, panel);
}
});
}
}
问题内容: 在给定的示例中,我想将文本移动到图像和形状下方。请帮我做。 在此示例中,JLable位于面板顶部。我想将其向下移动到图像/形状。 我尝试了,但是没有用。请告诉我我是否缺少什么。 问题答案: 考虑使用API的可用功能… 看一眼: 如何使用标签 例如…
问题内容: 我希望两个div在包装div中彼此相邻。在这种情况下,绿色div的高度应确定包装纸的高度。 我如何通过CSS实现呢? 问题答案: 浮动一个或两个内部div。 浮动一格: 或者如果您同时浮动两个子元素,则需要鼓励包装器div包含两个浮动子元素,否则它会认为它是空的而不是在它们周围放置边框 浮动两个div:
问题内容: 我正在使用NetBeans GUI构建器来处理我的布局(我对LayoutManagers很糟糕),并试图放置一个简单的JLabel,以使其始终(水平)居于其父JPanel内部。理想情况下,即使调整了JPanel的大小,这也将保持正确,但是,如果这是一个疯狂的编码,比第一次创建JPanel时居中就足够了。 我自己尝试处理布局已经很糟糕了,但是由于NetBeans GUI Builder自
问题内容: 我有多个透明实例,我想彼此叠加(也称为Photoshop层)并烘焙成一个输出。我该怎么做呢? 问题答案: 我会说最好的选择是拍摄缓冲的图像,并创建一个附加图像,以便将一个对象附加到该图像上。然后,只需使用Graphics.drawImage()将它们放置在彼此的顶部。 因此,遵循以下原则:
我有JPanel,它包含: JButton和JLabel,其中设置了图片 我想把按钮放在JLabel顶部的北中心位置。目前它的设置彼此相邻,我不知道如何覆盖JLabel。 我在这里尝试了许多解决方案,但是它似乎并不完全按照我想要的方式工作。谢谢! 更新:按钮放在JLabel的顶部,但不在里面。
问题内容: 我试图将一系列JLabel放置在JPanel上的特定X和Y坐标上(并设置其高度和宽度)。无论我做什么,每个标签都会立即跳到上一个标签的右侧,并且具有与所有其他标签完全相同的尺寸。 现在,我的Jpanel位于网格布局中。我尝试了绝对布局(非法参数异常结果),自由设计(没有标签出现),流程布局(所有内容都被压缩到中间)以及其他一些内容。 不知道我需要做些什么才能使这项工作。有人可以帮忙吗?