小编pur*_*cat的帖子

如何覆盖单个按钮的Nimbus按钮边距

我创建了一个文本字段组件,里面有一个"x"按钮,用于清除字段的文本.即,我可以使用不会改变按钮上的利润-这当使用Windows的系统的外观和感觉(Windows版),但我有尝试使用雨云时得到正确的看问题的伟大工程button.setMargin(new Inset(0, 0, 0, 0),我可以用系统的外观感觉

在使用Nimbus时,我确实寻求帮助设置边距,这似乎是一个常见的问题.我能够找到允许我更改边距的部分解决方案,但是它会更改所有按钮的边距,我只希望单个按钮与默认值不同.

我明确地设置'x'按钮大小,根据'x'字符串的边界计算,这样它就足以显示'x'.

使用Window的系统外观时的结果,这是我正在寻找的一般外观:

系统外观

使用默认Nimbus外观时的结果; 'x'溢出了Nimbus允许的空间,导致省略号.

灵气的外观和感觉

使用Nimbus并覆盖Button.contentMargins的结果:现在'x'按钮看起来正确,但'test'按钮看起来很糟糕.

Nimbus的外观和感觉,以及保证金覆盖

源代码:

import java.awt.Graphics;
import java.awt.Insets;
import java.awt.geom.Rectangle2D;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.LookAndFeel;
import javax.swing.UIDefaults;
import javax.swing.UIManager;
import javax.swing.UIManager.LookAndFeelInfo;
import javax.swing.UnsupportedLookAndFeelException;

public class TextFieldTest {        
    public static void main(String[] args) {
        boolean useNimbusLookAndFeel    = false;
        boolean overrideNimbusDefaults  = false;
        String lafName = UIManager.getSystemLookAndFeelClassName();

        if ( useNimbusLookAndFeel ) {
            for ( LookAndFeelInfo info : UIManager.getInstalledLookAndFeels() ) {
                if ( "Nimbus".equals(info.getName()) ) {
                    lafName = …
Run Code Online (Sandbox Code Playgroud)

java swing jbutton nimbus

2
推荐指数
1
解决办法
2870
查看次数

标签 统计

java ×1

jbutton ×1

nimbus ×1

swing ×1