当前位置: 首页 > 知识库问答 >
问题:

Java JButton活动背景

羿经武
2023-03-14

我如何设置一个按钮的活动背景颜色在swing,Java?Active background color是单击按钮时按钮背景的颜色。

共有1个答案

田普松
2023-03-14

移动鼠标并单击按钮时更改JButton背景颜色的示例演示:

import java.awt.Color;
import java.awt.Graphics;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;

public class JButtonBGColorDemo {

    class ColorTestButton extends JButton {

        private Color hoverBackgroundColor;
        private Color pressedBackgroundColor;

        public ColorTestButton() {
            this(null);
        }

        public ColorTestButton(String text) {
            super(text);
            super.setContentAreaFilled(false);
        }

        @Override
        protected void paintComponent(Graphics g) {
            if (getModel().isPressed()) {
                g.setColor(pressedBackgroundColor);
            } else if (getModel().isRollover()) {
                g.setColor(hoverBackgroundColor);
            } else {
                g.setColor(getBackground());
            }
            g.fillRect(0, 0, getWidth(), getHeight());
            super.paintComponent(g);
        }

        @Override
        public void setContentAreaFilled(boolean b) {
        }

        public Color getHoverBackgroundColor() {
            return hoverBackgroundColor;
        }

        public void setHoverBackgroundColor(Color hoverBackgroundColor) {
            this.hoverBackgroundColor = hoverBackgroundColor;
        }

        public Color getPressedBackgroundColor() {
            return pressedBackgroundColor;
        }

        public void setPressedBackgroundColor(Color pressedBackgroundColor) {
            this.pressedBackgroundColor = pressedBackgroundColor;
        }
    }

    protected void createUIDesign() {
        JFrame frame = new JFrame("Test button");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        final ColorTestButton btn = new ColorTestButton("Color Test Button");
        btn.setForeground(new Color(0, 135, 200).brighter());
        btn.setHorizontalTextPosition(SwingConstants.CENTER);
        btn.setBorder(null);
        btn.setBackground(new Color(3, 59, 90));
        btn.setHoverBackgroundColor(new Color(3, 59, 90).brighter());
        btn.setPressedBackgroundColor(Color.PINK);
        frame.add(btn);
        frame.setSize(300, 300);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new JButtonBGColorDemo().createUIDesign();
            }
        });

    }

}
 类似资料:
  • 我看到许多应用程序使用全屏图像作为背景。这是一个例子: 我想在项目中使用它,到目前为止,我发现最好的方法是使用大尺寸的图像,将其放入并使用来调整边距 问题是,如果屏幕分辨率非常高,图像质量就会下降。 我想到的另一个选择是使用中的图像,将中的和作为背景...这拉伸了图像,但我认为结果不是很好... 你会怎么做?

  • 我已经创建了一个类,它扩展了。在该类中,当我按下一个按钮时,我想更改一个按钮的背景,该按钮被放置在主活动中。 我试图创建一个内部类来访问Main Active对象,但我得到的是这个错误: 尝试在空对象引用上调用虚拟方法android.content.pm.Application ationInfoandroid.content.Context.getApplication ationInfo()

  • 对不起我的英语:)。我需要模糊我的对话框活动背景,我尝试了这种方法 模糊警报对话框后面的背景 我用以下代码发送位图: 并在我的活动中接收位图: 但它强迫我关闭logcat中的错误: 我怎样才能解决这个问题?或者你知道另一种模糊对话活动背景的方法吗?

  • 问题内容: 我想更改主视图(而不是按钮或文本视图)的背景颜色,而只是通常是黑色的真实背景…我得到了以下代码: 它在的内部,但只是更改了Button的背景。 问题答案: 尝试用类似的方法创建一个方法… 然后从您的OnClickListener调用它,并传递您想要的任何颜色。

  • 我有一个小,很少有活动,每个活动都有一个图像作为背景。 由于每个图像都相当大(全高清),它会快速消耗内存,从而使整个应用程序运行缓慢,甚至由于内存不足异常而崩溃。 你怎么处理这样的事情?