Swing按钮重绘的基本原理是:创建一个继承自JButton的扩展按钮类,在其中重载paintComponent方法,这个方法用来实现控件的显示界面绘制。
为了使的按钮可以响应鼠标移入、移出按钮等事件,还对它添加了鼠标监听器,这通过addMouseListener方法实现。
用JLabel作为背景,然后组件添加在JLabel上,就是把JLabel看作是跟JPanel同等级的容器,这样就没有你重绘时覆盖组件的问题了,给你个示例
package my.test.mainimport 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)
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)