Swing

您所在的位置:网站首页 java界面设置两个背景颜色 Swing

Swing

2024-01-26 16:53| 来源: 网络整理| 查看: 265

JFrame默认是BorderLayout

JPanel默认是FlowLayout。

 

 

1.JFrame设置背景色,注意体会注释的那句话。

 

package com.tools; import java.awt.Color; import javax.swing.JFrame; public class Test extends JFrame { public static void main(String[] args) { new Test(); } public Test() { this.setSize(400,300); this.setLocation(400,300); this.setBackground(Color.blue); this.getContentPane().setBackground(Color.red); this.getContentPane().setVisible(false);//如果改为true那么就变成了红色。 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } }

 2.给JFrame设置背景图片。

方法1:通过在JFrame中添加一个JPanel,背景图片放在JPanel上来实现。代码如下:

import java.awt.*; import javax.swing.*; public class Test extends JFrame { //创建一个容器 Container ct; //创建背景面板。 BackgroundPanel bgp; //创建一个按钮,用来证明我们的确是创建了背景图片,而不是一张图片。 JButton jb; public static void main(String[] args) { new Test(); } public Test() { //不采用任何布局方式。 ct=this.getContentPane(); this.setLayout(null); //在这里随便找一张400*300的照片既可以看到测试结果。 bgp=new BackgroundPanel((new ImageIcon("images\\background.jpg")).getImage()); bgp.setBounds(0,0,400,300); ct.add(bgp); //创建按钮 jb=new JButton("测试按钮"); jb.setBounds(60,30,160,30); ct.add(jb); this.setSize(400,300); this.setLocation(400,300); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } } class BackgroundPanel extends JPanel { Image im; public BackgroundPanel(Image im) { this.im=im; this.setOpaque(true); } //Draw the back ground. public void paintComponent(Graphics g) { super.paintComponents(g); g.drawImage(im,0,0,this.getWidth(),this.getHeight(),this); } }

效果如图:

 方法2:我们用JLayeredPane,JLayeredPane 为 JFC/Swing 容器添加了深度,允许组件在需要时互相重叠。Integer 对象指定容器中每个组件的深度,其中编号较高的组件位于其他组件之上。常用的几个层如下图:

具体实现代码如下:

 

 

/** * 给JFrame 添加一个背景图案。 */ package com.swingpractise; import javax.swing.*; public class JFrameBackground4 extends JFrame { //创建一个JLayeredPane用于分层的。 JLayeredPane layeredPane; //创建一个Panel和一个Label用于存放图片,作为背景。 JPanel jp; JLabel jl; ImageIcon image; //创建一个按钮用于测试的。 JButton jb; public static void main(String[] args) { new JFrameBackground4(); } public JFrameBackground4() { layeredPane=new JLayeredPane(); image=new ImageIcon("images\\background.jpg");//随便找一张图就可以看到效果。 //创建背景的那些东西 jp=new JPanel(); jp.setBounds(0,0,image.getIconWidth(),image.getIconHeight()); jl=new JLabel(image); // jl.setBounds(0,0,image.getIconWidth(),image.getIconHeight()); jp.add(jl); //创建一个测试按钮 jb=new JButton("测试按钮"); jb.setBounds(100,100,100,100); //将jp放到最底层。 layeredPane.add(jp,JLayeredPane.DEFAULT_LAYER); //将jb放到高一层的地方 layeredPane.add(jb,JLayeredPane.MODAL_LAYER); this.setLayeredPane(layeredPane); this.setSize(image.getIconWidth(),image.getIconHeight()); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setLocation(image.getIconWidth(),image.getIconHeight()); this.setVisible(true); } }

测试效果如下图:

 欢迎大家一起讨论更好更优的方法。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3