matlab GUI-如何给GUI界面添加背景图片

matlab GUI-如何给GUI界面添加背景图片,第1张

每个GUI界面,都是自己的小作品。给它加上一个好看的背景图会令其更加出彩。以先前讲过的加法计算器为例子,教大家一种简单的添加背景图片的方法。加法计算器的图形界面如下图所示。

首先进入到程序中,在OpeningFcn函数这块,加上如下的程序。在这里要设置为背景的照片是BJ.jpg,放在'D:\学习\MATLAB GUI\图片'的路径下,大家根据自己的实际情况更换图片路径与图片名即可。

运行程序,会出现如下图所示的结果。

此时会发现加号和等号这两个静态文本框的背景色和背景图片不符。进入fig图形界面,双击进入这两个静态文本框的属性编辑器中,修改其背景色为白色即可。

再次运行程序,就会出现理想的结果啦。

代码如下:

import java.awt.*  

import java.awt.event.*  

import javax.swing.*  

   

public class GraExp extends JFrame  

{   

CInstead c1=new CInstead()  

Container c  

JLabel lbl1=new JLabel("姓名:" )  

JLabel lbl2=new JLabel("密码:" )  

JTextField tf1=new JTextField(10),  

tf2=new JTextField(10)  

   

public GraExp()  

{   

setContentPane(c1)  

c=getContentPane()  

c.setLayout(new FlowLayout(FlowLayout.LEFT))  

c.add(lbl1)  

c.add(tf1)  

c.add(lbl2)  

c.add(tf2)  

   

setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE)  

setSize(new Dimension(400,300))  

show()  

}   

public static void main(String[] args)  

{   

GraExp ge=new GraExp()  

}   

class CInstead extends JPanel  

{   

ImageIcon icon  

Image img  

public CInstead()  

{   

icon=new ImageIcon(GraExp.class.getResource("333.png" ))  

img=icon.getImage()  

}   

public void paintComponent(Graphics g)  

{   

super.paintComponent(g)  

g.drawImage(img,0,0,null )  

}   

}   

}

程序分析: 

JComponent.paint先绘制组件,然后绘制组件的边框,再绘制组件的子组件。调用的顺序确保组件、边框和子组件都是可视的。如果组件有一个 UI代表,则JComponent.paintComponent调用该代表的Update方法,该方法为不透明组件擦除背景,然后绘制组件。 

CInstead是一个不透明的组件,如果重载paint方法,其背景图是无法被擦除的,因此,即使更新了组件的所有包含组件,在界面上是看不到的。所以必须重载paintComponent方法,在绘制子组件前先擦除背景。 

对双缓存组件,paint方法负责把组件绘制到屏外缓存中,然后把屏外缓存拷贝到组件的屏上代表中,正因为如此,不建议为Swing组件重载paint,如果需要重新定义如何绘制组件,那么就重载paintComponent()。 


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

原文地址: http://outofmemory.cn/bake/11462358.html

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

发表评论

登录后才能评论

评论列表(0条)

保存