派生自
BasicButtonUI
的类可以改变按钮的外观,定位于
javax.swing.plaf.metal
的
MetalButtonUI
类,控制
metal
视感下
Button
的外观
JButton b = new JButton();
b.setUI(new MyUI);
2
.派生自
javax.swing.plaf.basic.BasicBorders.ButtonBorder
的类可以改变按钮的边框绘制,
metal
视感下
JButton
边框由
javax.swing.plaf.metal.MetalBorders.ButtonBorder
绘制
b.setBorder();
★
必须先
setUI
再
setBorder
●
JButton
的结构
MVC
模式设计
Model
:
ButtonModel
View
:
BasicButtonUI (
根据不同的视感,再有不同的子类,如
MetalButtonUI)
以及
javax.swing.plaf.metal.MetalBorders.ButtonBorder
,控制边框的绘制
MetalButtonUI
的
update
方法控制了按钮初始时的绘制(
MetalUtils.drawGradient(c, g, "Button.gradient", 0, 0, c.getWidth(), c.getHeight(), true)
),因此,即使重写
paint()
方法,初始按钮仍然会被绘制。
Controller
:
JButton (
一般使用
AbstractButton
,各种
Button
的父类
)
●
about MetalUtils
, Metal utility tools.
定位于javax.swing.plaf.metal.MetalUtils
提供了大量
Metal
视感下的辅助方法(按钮初始化的
Gradient
样式就是通过它的
drawGradient
方法绘制的)。并提供了三个
inner class
进行视感处理。
GradientPainter
OceanDisabledButtonImageFilter
OceanToolBarImageFilter
★
MetalUtils
不是
public class,
因此无法从外部包访问其
●
关于
MetalButtonUI
的
update
方法及
JButton
的初始绘制
MetalButtonUI
.update()
负责绘制按钮的初始样式(调用
MetalUtils.drawGradient()
方法绘制)。然后调用
paint()
方法绘制其他效果(
pressed, focus, text
)。最后调用
super.update()
。
Super.update()
传递给
BasicButtonUI
,由于
BasicButtonUI
没有
overload update
方法,因此传递给
javax.swing.plaf.ButtonUI
。
ButtonUI
是一个
abstract class
,
因此
update
方法继续传递给
javax.swing.plaf.ComponentUI
。
ComponentUI
的
update
方法只是简单的
fillRect
组件,然后调用
paint()
。
分享到:
相关推荐
本主题将深入探讨如何在C#中自定义一个“水晶按钮”控件,它不仅具备基本Button的功能,还可以通过自定义样式和效果实现独特的视觉体验。 首先,我们需要了解控件的基本构造。在C#中,自定义控件通常继承自已有的...
标题"‘C#自定义按钮、自定义Button控件’"所指的就是利用C#编程语言和.NET框架创建一个具有特定外观和行为的自定义Button控件。这通常涉及到对控件的外观进行定制,例如改变其背景色、边框样式、文字颜色,甚至添加...
这样可以在不修改代码的情况下,通过更改主题来改变所有自定义Button的外观。 通过以上步骤,你可以创建一个具备特定功能或设计的自定义Button。然而,自定义控件往往涉及到更多的细节,如动画效果、触摸反馈、性能...
在Windows Presentation Foundation (WPF) 中,自定义控件是一项重要的功能,它允许开发者根据自己的需求创建具有独特外观和行为的UI元素。本教程将聚焦于如何创建一个Vista风格的Button控件,以提供更丰富的用户...
重写onDraw()方法绘制自定义的按钮外观。 2. **按下抬起状态**:在自定义的View中,我们需要监听ACTION_DOWN(手指按下)和ACTION_UP(手指抬起)这两个触摸事件。当ACTION_DOWN发生时,改变按钮的状态,比如改变...
在某些特定的应用场景中,我们可能需要自定义特定的控件以满足个性化需求,例如自定义Button控件。本教程将详细介绍如何在Qt4中使用Qt Designer实现自定义Button控件的过程。 首先,要创建自定义的Button控件,你...
首先,SwiftUI的`Button`允许我们通过`ButtonStyle`来改变其外观和行为。默认的`ButtonStyle`会根据平台和状态(如按下或悬浮)提供不同的视觉反馈。但是,如果你想要更精细的控制,比如定制标题的字体大小、颜色、...
在IT领域,自定义按钮(Button)是用户界面设计中的重要元素,特别是在各种软件平台和应用程序中。"平台下的自定义按钮Button"这个主题聚焦于如何在特定的开发环境中创建和定制自己的按钮控件,以满足个性化的需求。...
在.NET中,我们可以继承现有的System.Windows.Forms.Button类来创建一个自定义的Button。这允许我们扩展或修改控件的行为、外观或功能。首先,创建一个新的类并让它继承自Button。通过这种方式,我们可以重写某些...
最后,为了让自定义`Switch`按钮在不同的设备和Android版本上保持一致的外观和行为,可以使用`style`和`主题`进行适配。在`res/values/styles.xml`中定义自定义样式,并在应用程序的主主题中应用: ```xml <!-- ...
- 在新类中,你需要提供一个构造函数,接受图像资源ID、初始位置等参数,以初始化Button的外观。 - 为Button添加点击事件监听器。AndEngine提供了TouchEvent类来处理触摸事件,你需要覆盖onAreaTouched()方法,以...
在本文中,我们将深入探讨如何使用C#编程语言创建自定义的Button控件,特别是针对播放器、Vista风格以及Office 2007和2010样式的设计。我们将利用GDI+图形设备接口的强大功能,实现按钮的自绘,以创造出美观且功能...
本文将深入探讨“C#自定义控件合集-SunnyUI.rar”这个压缩包中的知识点,包括自定义控件的创建、Button、进度条、Box(可能指的是对话框)以及提示框的实现和外观设计。 首先,自定义控件在C# Winform开发中扮演着...
Swing提供了丰富的功能,使得开发者能够自定义按钮的行为、外观和交互方式。本篇文章将详细探讨如何创建和自定义`JButton`,以及如何响应按钮点击事件。 ### 1. `JButton`的基本使用 `JButton`是`AbstractButton`...
本示例主要讲解如何使用自定义的Button和TabHost来实现页面间的切换,从而创建一个具有个性化标签导航功能的应用。 首先,我们来看看“自定义button”。在Android原生的Button组件基础上进行自定义,主要是为了满足...
在 Qt 框架中,自定义 Button 是一个常见的需求,它允许开发者创造出具有独特视觉效果和交互方式的按钮控件。"Qt 自定义 Button 之美" 主题深入探讨了如何利用 Qt 的强大功能来定制按钮,以满足个性化设计和功能扩展...
然而,其默认的功能和样式可能无法满足所有开发需求,比如我们可能希望自定义按钮上的文字或者对话框的外观。标题"自定义wpf中的MessageBox(可自定义button键文字)"恰好指向了这一需求。通过自定义,我们可以让...
【Qt】仿360安全卫士(自定义ToolButton)是关于使用Qt框架来创建一个类似360安全卫士界面的项目,主要聚焦在自定义QToolButton控件上。Qt是一个跨平台的C++图形用户界面应用程序开发框架,广泛应用于桌面应用、移动...
接下来,我们可以通过设置属性来改变Button的外观。例如,更改背景颜色或图片: ```java public void init() { // 设置背景色 setBackgroundColor(Color.parseColor("#FF0000")); // 设置背景图片 ...
3. 自定义绘制:通过重写`onDraw()`方法,我们可以控制Button的绘制逻辑,实现与iOS相似的外观。 ```java @Override protected void onDraw(Canvas canvas) { // 绘制背景、边框、文字等 // ... } ``` 4. 动画...