我如何可以调整一个JLabel的背景或只适用于顶部和底部边框?
题
我有一些看起来是这样的:
可以看到,“Blambo”是用不透明的,红色背景的JLabel。标签坐落在具有单个像素边框黑色周围所有的方式有点灰栏的顶部。我想我的红色预警,以配合它更很好地坐在酒吧里,也就是我要么需要让两个像素短,其向下移动一个像素或者我需要将相同的单个像素边框仅适用于顶部和底部。这两个,第一个可能是优选的,因为这一段代码与其他标签共享。
有问题的代码:
bgColor = Color.red;
textColor = Color.white;
setBackground(bgColor);
setOpaque(true);
// This line merely adds some padding on the left
setBorder(Global.border_left_margin);
setForeground(textColor);
setFont(font);
super.paint(g);
这边界正是如此定义:
public static Border border_left_margin = new EmptyBorder(0,6,0,0);
解决方案
您可以像这样的标签,创建一个新的边界:
编辑:看到您的评论在另一个答案后,我创建了一个组合边框你想要的东西,让你
import java.awt.Color;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.border.Border;
/**
* @author Savvas Dalkitsis
*/
public class Test1 {
public static void main(String[] args) {
JFrame f = new JFrame("Test");
JLabel c = new JLabel("Hello");
Border b = BorderFactory.createCompoundBorder(
BorderFactory.createMatteBorder(2, 0, 2, 0, Color.black),
BorderFactory.createEmptyBorder(0, 100, 0, 0));
c.setBorder(b);
f.getContentPane().add(c);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.pack();
f.setVisible(true);
}
}
其他提示
没有看到你的代码,很难知道你已经知道或都试过了。
您明确设置一个组件的边框像这样:
myLabel.setBorder(BorderFactory.createMatteBorder(1, 0, 1, 0, Color.BLACK));
现在,的JLabel相当复杂的野兽,具有很大的用于测量其(可选)图标,以及围绕许多一般情况下规划其布局代码。你可能会更好继承的JComponent编写自己的,很简单的标签。
不隶属于 StackOverflow