java swing 重绘方法,求救~~~

java swing 重绘方法,求救~~~,第1张

进行界面设计的时候,有时需要设计一些特殊的按钮,如音乐播放器的原型,三角形按钮。如果Swing提供的默认按钮无法满足要求,就需要对按钮控件(JButton)进行重绘。

Swing按钮重绘的基本原理是:创建一个继承自JButton的扩展按钮类,在其中重载paintComponent方法,这个方法用来实现控件的显示界面绘制。

为了使的按钮可以响应鼠标移入、移出按钮等事件,还对它添加了鼠标监听器,这通过addMouseListener方法实现。

用JLabel作为背景,然后组件添加在JLabel上,就是把JLabel看作是跟JPanel同等级的容器,这样就没有你重绘时覆盖组件的问题了,给你个示例

package my.test.main

import java.awt.BorderLayout

public class First extends JDialog {

private final JPanel contentPanel = new JPanel()

private JTextField textField

/**

* Launch the application.

*/

public static void main(String[] args) {

try {

First dialog = new First()

dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE)

dialog.setVisible(true)

} catch (Exception e) {

e.printStackTrace()

}

}

/**

* Create the dialog.

*/

public First() {

setBounds(100, 100, 450, 300)

getContentPane().setLayout(new BorderLayout())

contentPanel.setLayout(new GridLayout(1, 1))

getContentPane().add(contentPanel, BorderLayout.CENTER)

JLabel bgLb = new JLabel()

bgLb.setIcon(new ImageIcon("bg.jpg"))

bgLb.setHorizontalAlignment(SwingConstants.CENTER)

contentPanel.add(bgLb)

bgLb.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 50))

textField = new JTextField()

bgLb.add(textField)

textField.setColumns(10)

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11848324.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存