使用自定义外观创建JButton

Nik*_*hil 8 java swing jbutton

在此输入图像描述

我对java swing很新,不熟悉paint().我想在java swing中创建一个带有上面的按钮.任何人都可以帮我这样做.任何指导都将不胜感激.提前致谢

Dav*_*amp 13

我用google搜索Facebook蓝色RGB:59,89,182/Hex Code是#3B5998和Font系列:Tahoma.

在这里使用它是我通过几个调用得到的setFocusPainted(false),setBackground(new Color(59, 89, 182))setFont(new Font("Tahoma", Font.BOLD, 12)):

在此输入图像描述

import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Font;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class Test {

    public Test() {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLayout(new FlowLayout());
        JButton b = new JButton("Log In");//http://www.chacha.com/question/what-are-the-rgb-values-for-the-background-color-of-comments-on-facebook
        b.setBackground(new Color(59, 89, 182));
        b.setForeground(Color.WHITE);
        b.setFocusPainted(false);
        b.setFont(new Font("Tahoma", Font.BOLD, 12));//http://answers.yahoo.com/question/index?qid=20070906133202AAOvnIP
        frame.add(b);
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new Test();
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

除非你正在寻找相同的(IMO这是最好的,没有使用实际图像)...比设置按钮的图像将是最好的方式


Rus*_*ser 6

如果您想完全覆盖按钮的外观,最常见的解决方案是创建自己的ButtonUI:

class MyButton extends BasicButtonUI {
    @Override
    public void paint(Graphics g, JComponent c) {
        AbstractButton b = (AbstractButton) c;
        ButtonModel model = b.getModel();
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以根据按钮的状态(翻滚,聚焦,武装,按下等)绘制您想要的任何颜色.查看超类实现,了解如何执行此操作的基本知识.

然后只需设置要更改的按钮的UI:

button.setUI(new MyButton());
Run Code Online (Sandbox Code Playgroud)