用JFrame时,设置背景颜色需使用JFrame.getContentPane().setBackground(Color.red)
Container con=this.getContentPane();//得到内容窗格
con.setBackground(Color.blue);
而使用Frame时则可以直接使用setBackground(Color.red),且需要设置窗体默认关闭事件,否则运行窗口无法正常关闭。
将按钮添加到面板,再将面板添加到框架中,要通过面板来调用setBackground()方法来设置框架的背景颜色,直接使用myFrame.setBackground(Color.GREEN);是不会起作用的。原因是JFrame一旦创建,其中已包含一个内容面板,此时myFrame.setBackground无论设置成什么颜色,都将被顶层面板所覆盖。因此,要改变背景颜色,就要改变面板的背景颜色。

import javax.swing.*;
import java.awt.*;
public class win {public static void main(String args[]){JFrame window1=new JFrame("第一个窗口");JFrame window2=new JFrame("第二个窗口");Container con=window1.getContentPane();//得到内容窗格con.setBackground(Color.BLACK);window1.setBounds(60, 100, 188, 108);//等价于//window1.setSize(188,108);//window1.setLocation(60,100);window2.setBounds(260, 100, 188, 108);window1.setVisible(true);//是否可见window1.setResizable(false);//不可以调整窗口的大小window1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);window2.setVisible(true);window2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}


给窗口添加背景:(使用电脑上的图片设置背景)

路径的书写:
C:/Users/86156/OneDrive/图片/手机上的高清图片/你的名字.png


import java.awt.*;
import javax.swing.*;public class BgTest extends JFrame{public BgTest(){init();this.setTitle("背景图设置");this.setSize(200, 300);//设置窗体大小this.setLocation(600,300);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setResizable(true);this.setVisible(true);}private void init() {JLabel lbl1 = new JLabel("用户名:");//两个标签JLabel lbl2 = new JLabel("密 码:");JTextField txt = new JTextField(10);JPasswordField pasw = new JPasswordField(10);//密码输入框pasw.setEchoChar('*');JButton btn1 = new JButton("登录");JButton btn2 = new JButton("取消");ImageIcon img = new ImageIcon("C:/Users/86156/OneDrive/图片/手机上的高清图片/你的名字.png");//要设置的背景图片JLabel imgLabel = new JLabel(img);//将背景图放在标签里。this.getLayeredPane().add(imgLabel, new Integer(Integer.MIN_VALUE));//将背景标签添加到jfram的LayeredPane面板里。imgLabel.setBounds(0, 0, img.getIconWidth(), img.getIconHeight());// 设置背景标签的位置Container contain = this.getContentPane();((JPanel) contain).setOpaque(false); // 将内容面板设为透明。将LayeredPane面板中的背景显示出来。contain.setLayout(new FlowLayout());contain.add(lbl1);contain.add(txt);contain.add(lbl2);contain.add(pasw);contain.add(btn1);contain.add(btn2);}public static void main(String[] args) {new BgTest(); }
}

Image直属java.awt包,抽象类。BufferImage为image的直接子类,增加了缓冲功能。BufferedImage生成的图片在内存里有一个图像缓冲区,利用这个缓冲区我们可以很方便的操作这个图片,通常用来做图片修改操作如大小变换、图片变灰、设置图片透明或不透明等。加载图片到内存:
BufferedImage image = ImageIO.read(new FileInputStream(imgPath));//利用getGraphics()函数获得图形上下文作进一步操作。//Image image=imageToolkit.getDefaultToolkit().getImage(imgPath);这种方法并未将图片加载到内存,仅仅是引用。ImageIcon直属javax.swing包
类定义:
public class ImageIcon extends Object  implements Icon, Serializable, Accessible。
imageicon与image的关系是:imageicon利用image绘制icon。不过,Image一般尺寸较大,不适合用作icon(大图片用作icon时只显示图片的一部分),需要经过处理:
ImageIcon imageIcon = new ImageIcon(new File(path));
Image image = imageIcon.getImage();
image = image.getScaledInstance(30,20,Image.SCALE_FAST);
ImageIcon icon = new ImageIcon(image);//利用imageicon的构造函数 public ImageIcon(Image i)

窗口的大小和图片大小一样

主要思路:
1.把图片添加到标签里(把标签的大小设为和图片大小相同),把标签放在分层面板的最底层;
2.把窗口面板设为内容面板并设为透明、流动布局。
3.之后把组件和面板添加到窗口面板就可以;
大白话翻译:
把JFrame想象成一个桌子,桌子上面有个木板,组件和面板就是木板上的物品,我们就是把桌子上的木板换为玻璃板,然后把背景图放在玻璃板下面,把物品放在玻璃板上面;

package lfs;import java.awt.FlowLayout;import javax.swing.*;public class ImageDemo {public static void main(String[] args) {JFrame jf=new JFrame("背景图片测试");//1.把图片添加到标签里(把标签的大小设为和图片大小相同),把标签放在分层面板的最底层;ImageIcon bg=new ImageIcon("C:/Users/86156/OneDrive/图片/手机上的高清图片/动漫图片.jpg");JLabel label=new JLabel(bg);label.setSize(bg.getIconWidth(),bg.getIconHeight());jf.getLayeredPane().add(label,new Integer(Integer.MIN_VALUE));//2.把窗口面板设为内容面板并设为透明、流动布局。JPanel pan=(JPanel)jf.getContentPane();pan.setOpaque(false);pan.setLayout(new FlowLayout());//3.之后把组件和面板添加到窗口面板就可以;JButton btn=new JButton("测试按钮");pan.add(btn);jf.setSize(bg.getIconWidth(),bg.getIconHeight());jf.setLocationRelativeTo(null);jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jf.setVisible(true);}}

java使用教程——组件及事件处理——窗口(设置窗口的颜色和背景)相关推荐

  1. java实用教程——组件及事件处理——设置组件的位置(相对于窗口具体位置和布局)

    1: 相对于窗口的具体位置 关键点: JButton组件添加到JPanel时,如果想自己位置,需要对JPanel进行如下设置,才能自定义按钮位置 需要将组件添加到画板上去,才可以设置组件的相对具体位置 ...

  2. java实用教程——组件及事件处理——对话框(消息对话框,输入对话框,确认对话框)

    消息对话框:(这个对话框提供一些信息) 无模式:可多线程的执行 有模式:用户必须处理这个一个对话框.必须解决这个问题后才可以继续相处下去 对话框分为无模式和有模式两种.如果一个对话框 是有模式的对话框 ...

  3. java实用教程——组件及事件处理——ActionEvent事件

    事件源: 文本框,按钮,菜单项,密码框,单选按钮 注册监视器: 能够触发ActionEvent事件的组件使用方法 addActionListener(ActionListener listener) ...

  4. java使用教程——组件及事件处理——常用组件与布局

    常用组件: 1.JTextField(文本框) 允许用户在文本框中输入单行文本 2.JTextArea(文本区) 允许用户文本区中输入多行文本 3.JLabel(标签) 标签为用户提供信息 4.JBu ...

  5. java使用教程——组件及事件处理——菜单(添加图标)

    菜单条JMenuBar 菜单JMenu 菜单项JMenuItem menuFruit.addSeparator(); //在菜单添加分隔线 public class Example9_2 {publi ...

  6. java实用教程——组件及事件处理——ItemEvent事件(设置字体类型)

    ItemEvent事件源: 选择框,下拉列表都可以触发ItemEvent事件 注册监视器: 能够触发ItemEvent事件的组件使用addItemListener(ItemListener liste ...

  7. java实用教程——组件及事件处理——布局管理(五种)

    1.流式布局FlowLayout public void pack()调整此窗口的大小,以适合其子组件的首选大小和布局.如果该窗口或其所有者仍不可显示,则两者在计算首选大小之前变得可显示.在计算首选大 ...

  8. java实用教程——组件及事件处理——对话框(dialog)

    对话框: import java.awt.event.ActionEvent;import java.awt.event.ActionListener; import java.awt.*; impo ...

  9. java实用教程——组件及事件处理——布局的一个小实例

    import javax.swing.*; import java.awt.*;public class BasicComponentDemo {Frame frame = new Frame(&qu ...

最新文章

  1. javascript 检测 header下载文件--插件
  2. android.mk 比较字变量,Android.mk的用法和基础
  3. 怎么更改sql的实例版本_学会复杂一点的SQL语句:Oracle DDL和DML
  4. 小米公司宣布启动网络恶意营销账号专项整治行动
  5. python 给类添加属性_python – 如何动态添加属性到类中?
  6. FlexSPI对写时序支持
  7. Google+ 为什么会死?
  8. java gzip压缩_Java GZIP示例–压缩和解压缩文件
  9. 计算机应用论文投稿模板,标准期刊论文格式模板
  10. Sosoapi环境搭建
  11. 国外服务器修改dns地址,怎样设置国外DNS国外DNS服务器域名解析方法.doc
  12. 《蔡康永的说话之道》书摘
  13. 美国纽约大学超级计算机中心,美国纽约最好的八所大学介绍
  14. 0203逻辑卷管理、RAID磁盘阵列、VD0、管理运行级别
  15. 微软员工和 GitHub 员工宣布支持 996.ICU 运动,来签个名呗?
  16. 又有程序员跳楼了 我们是有多累?
  17. tmooccn达内登录_达内上线技术学习平台TMOOC.CN,由线下反攻线上,O2O是在线教育的出路?...
  18. Beta版本——第七次冲刺博客
  19. iOS开发:兼容适配iPhone X
  20. 推荐一些不常见的搜索引擎

热门文章

  1. 使用 Angular
  2. VS2008打包(含水晶报表)与安装注意事项
  3. Android之jni编译出现no matching function for call to ‘_JNIEnv::GetJava(JNIEnv* , Java VM**)‘解决办法)‘
  4. Sql 存储过程加游标结合的使用
  5. (八)python3 只需3小时带你轻松入门——List 与 dict 的常用操作
  6. 计算机转财经专业考试考什么,高三对口升学第三次模拟考试财经基础课计算机专业课...
  7. 这种动作片还需要汽车特效?
  8. 笑到打鸣~ | 今日趣图
  9. 你穿衣品味还不如AI,这有一款时尚着装网络模型
  10. 每日一笑 | 马冬梅当上了百度投资董事???