Java中的设计按钮(如CSS) [英] Design Button in Java (like in CSS)
本文介绍了Java中的设计按钮(如CSS)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
对于我的项目,我需要创建可自定义的按钮。除了我有问题,我不知道如何解决它。
我有一个我的按钮的背景图像,我希望它可以在X和Y中根据文本可扩展而不会丢失质量。
您有什么想法吗?
For my project, I need to create customizable buttons. Except that I have a problem and I do not know how to solve it. I have a background image for my button and I would like it to be extensible in X and Y according to the text there will be over without loss of quality. Do you have any ideas?
推荐答案
Swing有一个可插拔的外观和感觉,可以通过<改变其小部件的外观code> ComponentUI (在这种情况下:a ButtonUI
)。
Swing has a pluggable Look&Feel which allows to alter the appearance of its widgets by means of a ComponentUI
(in this case: a ButtonUI
).
按钮示例:
class StyledButtonUI extends BasicButtonUI {
@Override
public void installUI (JComponent c) {
super.installUI(c);
AbstractButton button = (AbstractButton) c;
button.setOpaque(false);
button.setBorder(new EmptyBorder(5, 15, 5, 15));
}
@Override
public void paint (Graphics g, JComponent c) {
AbstractButton b = (AbstractButton) c;
paintBackground(g, b, b.getModel().isPressed() ? 2 : 0);
super.paint(g, c);
}
private void paintBackground (Graphics g, JComponent c, int yOffset) {
Dimension size = c.getSize();
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g.setColor(c.getBackground().darker());
g.fillRoundRect(0, yOffset, size.width, size.height - yOffset, 10, 10);
g.setColor(c.getBackground());
g.fillRoundRect(0, yOffset, size.width, size.height + yOffset - 5, 10, 10);
}
}
主要测试方法:
public static void main (String[] args) {
JFrame f = new JFrame("Button UI Test");
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
JPanel p = new JPanel();
p.setBackground(Color.white);
f.setContentPane(p);
p.setLayout(new FlowLayout(5, 5));
p.setBorder(new EmptyBorder(10, 10, 10, 10));
for (int i = 1; i <= 5; i++) {
final JButton button = new JButton("Button #" + i);
button.setFont(new Font("Calibri", Font.PLAIN, 14));
button.setBackground(new Color(0x2dce98));
button.setForeground(Color.white);
// customize the button with your own look
button.setUI(new StyledButtonUI());
p.add(button);
}
f.pack();
f.setLocation(500, 500);
f.setVisible(true);
}
这篇关于Java中的设计按钮(如CSS)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文