概述
刚学Swing的时候感觉这东西好神奇啊,虽然不能完全按照自己想的把界面画出来,但是进过多番微调的话还是能达到一个满意的效果滴
给界面加背景是个非常实用的小技术,本人从网上学了个,代码比较少而且简单,在此给那些跟我一样学Swing的小鸟们晒晒,关键是对JPanel里面的paintComponent方法进行重写
代码代码:
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.GridLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class BackgroundTest {
public void showUI(){
final JFrame frame = new JFrame("背景测试");
frame.setSize(400, 500);
frame.setLayout(new GridLayout(1,1));
//设置背景
//你需要的图片,创建为ImageIcon
final ImageIcon image = new ImageIcon("D:\Image_source\ChatUI.jpg");
JPanel panel = new JPanel(){
public void paintComponent(Graphics g){
/*
* 以下三行分别是:
* 1. 继承原来的方法
* 2. 把图片弄上去
* 3. 把组件设置为透明,让图片显示出来
*/
super.paintComponent(g);
g.drawImage(image.getImage(), 0, 0, null);
this.setOpaque(false);
}
};
frame.add(panel);//将panel添加到frame上就ok了
//然后再在panel上添加你想要的组件
panel.setLayout(new FlowLayout());//要加组件就得先弄个布局器
JTextField tField = new JTextField(15);
JButton button = new JButton("木哈哈");
panel.add(tField);
panel.add(button);
frame.setVisible(true);
frame.setDefaultCloseOperation(3);
frame.setLocationRelativeTo(null);
frame.setResizable(false);//此处将掩盖此方法的缺陷,见文章后面解说...
}
public static void main(String args[]){
BackgroundTest t = new BackgroundTest();
t.showUI();
}
}
然后是运行效果:
(由于找不到个理想的支持外链的网床,效果图片就用附件了,要点击才能看到全图.......大家有没有
好的网床推荐个啊)
下面是此方法的补充说明:
1. frame.setLayout(new GridLayout(1,1))
之所以用 GridLayout(1,1) 是想让panel充满整个frame,当然也有其他方法,但这个比较简单和直接,反正这个是测试嘛,具体情况再具体分析
2. 关于用panel添加背景的那块
panel new完以后,以前看的上面是用一个JScrollPane来承载panel,经本人实践以后发现不加那几行代码也行,但如果你设置的组件要超出frame的显示范围的话那你就要加了
3. frame.setResizable(false)
这个语句比较重要,你丫把这行注释掉,然后再把界面最大化吧,让你看看“金玉其外,败絮其中”的悲剧现场,呵呵
这条语句就是强制把你技术上的不足给弥补掉,直接让别人不能最大化,蛮无耻的,呵呵,不过对于初学者很实用。
4. this.setOpaque(false)
这是让组件透明的方法,既然是做背景,那么一定不希望后来加的大范围组件把背景给掩盖掉,比如你要在上面再添加panel,如果直接加的话那么新的panel就会把一部分背景盖掉,这时就需要调用setOpaque方法。另外在补充一下,如果要添加一个带滚动条的JtextArea的话,就要把JScrollPane那边也透明,即加上如下两行代码:
scroll.setOpaque(false);
scroll.getViewport().setOpaque(false);
OK,就写到这里吧,希望能帮上你些忙
有不懂的地方或者有改进的方法就“跪求你留言”撒,木哈哈
最后
以上就是忐忑斑马为你收集整理的给自己写的界面加背景的全部内容,希望文章能够帮你解决给自己写的界面加背景所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复