
1 利用标签组件来设置
标签本来是一种最简单的组件,为什么可以将它设置成为一个窗体的背景呢首先还是要了解框架JFrame中的层次结构。JFrame中的层次分布及相对关系是:最底层是JRootPane,第二层是JlayerPane,最上层就是ContentPane,也正是我们常说的内容面板。所以一般我们拖放的控件就是在ContentPane层上。也就是说我们只需将背景放在JFrame的第二层是JlayerPane上,再把内容面板ContentPane设置为透明,则第二层JlayerPane上放置的即成为内容面板的背景了。具体代码如下:
JPanelpnlMain=new JPanel(); //创建面板pnlMain。
getContentPane()add(pnlMain); //将pnlMain设置为主面板。
Iconi=new ImageIcon("背景jpg"); /用源“背景jpg”构造一个ImageIcon对象i,需要注意如果的路径使用的是相对路径,则文件必须放在类文件所在文件夹或项目的根文件夹中,否则的路径必须用绝对路径。/
JLabellblLogo = new JLabel(i); //用指定的构造标签对象lb
thisgetLayeredPane()add(lb, new Integer(IntegerMIN_VALUE));
//把标签放在第二层JlayerPane上。
lbsetBounds(0, 0,iigetIconWidth(),igetIconHeight());
//设置标签的尺寸,即背景图象的大小。
getConentPane()setOpaque(false); /把内容面板设置为透明,这样整个框架的背景就不再是内容面板的背景色,而是第二层中标签的图像。/
pnlMainadd(lb); //将标签添加到主面板pnlMain中。
用标签组件JLabel来设置窗体背景,其扩展性上比较差,且在标签上不能放置其他组件,比如:在放置一个JButton,整个布局背景图就错乱。导致这种现象是因为Java加载组件是有顺序的,作为背景的JLabel的代码一定要放在全部组件代码的最后,这样JLabel的背景才不会被其他组件遮住,从而使整个布局背景错乱。所以采用这种方式来设置窗体背景有很大的局限性。因此最好是采用以下方式来设置窗体背景。
2 通过JPanel面板来设置窗体背景
JPanel面板是Java中的容器之一。而Java中的容器是没有背景的属性的,它们只有背景颜色,如果需要在JPanel面板上设置窗体背景,就需要重写paintComponent(Graphics g)方法,即把所要设置的背景画上作为JPanel面板的背景。具体实现如下:
首先定义一个JPanel的子类BjPanel,由于JPanel的构造方法不能添加图像,因此在创建此子类的时候先用getImage载入一幅背景,在重写paintComponent(Graphics g)方法时,利用drawImage方法将其逐渐绘制到屏幕上,并将该面板添加到框架中,最后将该面板设置为透明。其代码如下:
import javaawt;
import javaxswing;
public class bkground
{
public static void main(String args[])
{
BjFramef=newBjFrame();
fsetDefaultCloseOperation(JFrameEXIT_ON_CLOSE);
fsetVisible(true);
}
}
class BjFrame extends JFrame
{
public BjFrame()
{
setSize(WTH,HHT);
BjPanel pl=new BjPanel();
Container contentPane=getContentPane();
contentPaneadd(pl);
pl setOpaque(true);
}
public static final int WTH=300;
public static final int HHT=200;
}
class BjPanel extends JPanel
{
Image im;
public BjPanel()
{
im=ToolkitgetDefaultToolkit()getImage("背景jpg");//需要注意的是如果用相对路径载入,则文件必须放在类文件所在文件夹或项目的根文件夹中,否则必须用绝对路径。
}
public void paintComponent(Graphics g)
{
superpaintComponent(g);
int imWidth=imagegetWidth(this);
Int imHeight=imagegetHeight(this); //定义的宽度、高度
int FWidth=getWidth();
int FHeight=getHeight();//定义窗口的宽度、高度
int x=(FWidth-imWidth)/2;
int y=(FHeight-imHeight)/2;//计算的坐标,使显示在窗口正中间
gdrawImage(image,x,y,null);//绘制
}
}
JPanel panel = new JPanel() {
Image image = new ImageIcon("images/background3jpg")getImage();
protected void paintComponent(Graphics g) {
superpaintComponent(g);
gdrawImage(image, 0, 0, getWidth(), getHeight(), this);
}
};// 重写panel的 paintComponent方法,把绘致进去。
import javaawtBorderLayout;
import javaawtColor;
import javaawteventMouseEvent;
import javaawteventMouseListener;
import javaxswingJFrame;
import javaxswingJPanel;
public class B {
/
@param args
/
public static void main(String[] args) {
JFrame f = new JFrame();
final JPanel p = new JPanel();
fadd(p, BorderLayoutCENTER);
paddMouseListener(new MouseListener(){
public void mouseClicked(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {
psetBackground(Colorblack);
}
public void mouseReleased(MouseEvent e) {
psetBackground(Colorwhite);
}
});
fsetSize(200, 300);
fsetVisible(true);
fsetDefaultCloseOperation(JFrameEXIT_ON_CLOSE);
}
}
OK,我用你的程序测试了一下,基本帮你解决了,你在这个位置写上这几句
exitaddActionListener(new ActionListener(){//退出系统监听
public void actionPerformed(ActionEvent e){
setVisible(false);
}
});
/加入背景的话/
ImageIcon im = new ImageIcon("/image/denglujiemianjpg");
JLabel l1 = new JLabel(im);
l1setBounds(0,0,300,200);
deskpaneadd(l1);
thissetBounds(200,200,300,200);
setVisible(true);
}
注释:ImageIcon im = new ImageIcon("/image/denglujiemianjpg");
这里的image是需要你自己创的一个包,里面放你需要的,记住书写格式 "/image/jpg"
效果截图:
其实Java可以做的东西实在太多了,网站、软件、手机游戏、电脑游戏、中间件以及现在流行的安卓手机app等,都是由Java语言编写的;除了这些,Java还有很多用途,家里的微波炉、洗衣机等家电也有可能是Java控制的。
1、编写网站
现在许多大型网站都是用Java编写的,比如我们熟悉的电子商务交易平台阿里巴巴、淘宝、京东都是使用Java编写的。
即使是简单的jsp、servlet,和以struts为基础的网站,在政府项目中也是很受欢迎的,例如保险、教育、医疗、国防等部门的网站都是以Java基础来开发的。
2、Android应用
Java做安卓不单单是系统,还有APP。对于如今的开发人员来说,他们更多的时间是花在开发APP上面。
你在Android手机上,随便打开一个App应用,都是用Java语言编写。虽然现在Android运用了不同的JVM以及不同的封装方式,但是代码还是用Java语言编写的。
3、大型企业服务器应用
很多大型企业管理系统、CRM系统,ERP系统主要使JAVA编写。例如移动、联通、电信等通讯行业的客户管理系统,快递公司的物流系统离不开Java;交通工具的订票系统绝大部分也是使用Java开发的。
4、做软件工具
一般来说,编程语言都可以做软件,Java也不例外,许多常用的软件和开发工具都是运用Java来编写和开发的,例IneteliJIdea、Eclipse,NetbansIDE等。
5、嵌入式领域及消费类电子产品
Java在嵌入式领域发展空间很大,对于嵌入式系统来说,Java技术因为比C语言和汇编语言有很明显的优越性,而受到了嵌入式领域的青睐,并得到了大量的研究与开发应用。
嵌入式设备及消费类电子产品,主要用JavaMe,信息家电(如数字电视、机顶盒、电冰箱)、无线手持设备、通信终端、医疗设备、汽车电子设备等都是比较热门的Java应用领域。
6、大数据技术
Java最大的优势之一是它在大数据领域的地位,目前很多的大数据的架构都是通过Java来完成的。
例如现在最主流的大数据框架Hadoop的应用主要用Java开发的;Apache的基于Java的HBase和Accumulo以及ElasticSearchas。
public void setBackground(Color c)设置组件的背景色。
背景色对每个组件的影响各不相同,并且部分受背景色影响的组件在不同的 *** 作系统之间可能有所不同。
用这个方法嘛,改变不了,可能是你在窗体上添加了别的容器什么的把当前要改变的给挡上了仔细排查一下,相信你会改过来的
以上就是关于java怎么给窗体或者面板设置背景图片全部的内容,包括:java怎么给窗体或者面板设置背景图片、java 背景的设置 如何理解以下、编写一个java程序,显示一个面板的背景色,当按下鼠标键背景色为黑色,释放鼠标时背景色为白色等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)