java gui中怎么向窗体中添加一张图片,要求不用icon

并设定该图片大小为500*300像素。
2、怎么在面板中添加背景图片
3、面板中设置文本框,长度不超过10个字符

代码如下:

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()。 

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-10-25

那用drawImage,需要的包,你自己包含以下。

package com.Swing;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.JPanel;

public class BackgroundPanel extends JPanel{
private Image image;
public BackgroundPanel(){
setOpaque(false);
setLayout(null);
}
public void setImage(Image image){
this.image = image;
}
/**
 * 画出背景
 */
protected void paintComponent(Graphics g){
if(image != null){
int width = getWidth();
int height = getHeight();
g.drawImage(image, 0, 0, width,height ,this);
}
super.paintComponent(g);
}
}



//这是在主类中的代码
backgroundPanel = new BackgroundPanel(); //创建背景面板
backgroundPanel.setImage(new ImageIcon("Image\\BackGround.jpg").getImage()); //设置背景图片
getContentPane().add(backgroundPanel, BorderLayout.CENTER);

第2个回答  推荐于2016-02-11

先写个panel用来贴图片的,然后再用另一个主frame加载这个panel即可。

package com.card.frame.image;

import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;

import javax.swing.JPanel;

public class ImagePanel extends JPanel{
private Image image;
public ImagePanel(Image img){
this.image = img;
Dimension dime = new Dimension(image.getWidth(null),image.getHeight(null));
this.setPreferredSize(dime);
this.setMaximumSize(dime);
this.setMinimumSize(dime);
this.setSize(dime);
this.setLayout(null);
}

public void paintComponent(Graphics g){
super.paintComponent(g);
g.drawImage(image, 0,0,null);
}
}

//用来存放图片panel已经写好,现在来写主frame

package com.card.frame.frame;

import com.card.frame.image.ImagePanel;

import java.awt.*;

import javax.swing.*;

public class MyJFrame extends JFrame{

public MyJFrame(String title,int width,int height){
super(title);
this.setSize(width,height);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Dimension dime = Toolkit.getDefaultToolkit().getScreenSize();
this.setLocation(dime.width/2-width/2, dime.height/2-height/2);
}

    public static void main(String[] args){
        MyJFrame mj = new MyJFrame("背景图片",500,300);//这里是frame大小,注意:因为写的是按照图片实际大小来填充panel,因此你需要看清楚图片为 多少*多少 例如:500*300的大小,这里就填写500,300.建议你先缩小图片后,在来填写。
        ImagePanel ip = new ImagePanel(new ImageIcon("C:\\Documents and Settings\\Administrator\\桌面\\WP_20140915_002.jpg").getImage());//这里是图片路径

        JTextField jt = new JTextField(10);
        jt.setBounds(new Rectangle(20, 20, 140, 20));//这里是文本框位置

        ip.add(jt);

        mj.add(ip);
        mj.setVisible(true);
    }

}

本回答被提问者和网友采纳

如何给JAVA GUI 窗口添加背景图片?
用PANEL 继承PANEL重写paintComponent方法,这些控制添加在panel上,就不会出现你说的问题了。重写paint,会出现你说的问题 直接在窗体上添加了背景图片也会出现你说的问题。下边是例子。--- import javax.swing.ImageIcon;public class App extends JFrame { private JTextField textField;public App() { ...

java里面怎么给一个窗体添加一张背景图片啊,需要详细代码!谢谢
public class IS extends JFrame { IS(){ JPanel p=new JPanel();JLabel l=new JLabel();Icon icon=new ImageIcon("D:\\\\a.jpg"); \/\/在此直接创建对象 l.setIcon(icon);l.setBounds(0, 0, icon.getIconWidth(),icon.getIconHeight());p.add(l,new Integer(Integer.MIN_VALUE));...

VB中如何在ListView中添加ImageList中的图像
(1)新建一个VB工程 (2)在控件工具箱中添加ListView和ImageList控件 在工具箱上鼠标右键单击-->调出菜单 (3)在窗体上布置一个ListView和一个ImageList (4)向ImageList1中插入图片 鼠标右键单击ImageList1-->调出菜单-->属性 (5)将ListView1与ImageList关联起来 鼠标右键单击ListView1-->调出菜单...

java awt 中如何向panel中添加图片,急。。。
super.paint(g);g.drawImage(img, 20,20,40,40, this);\/\/其中第二到第五个参数分别为x,y,width,height } } 然后在别的地方添加这个ImgPanel控件就好了,比如:Panel p = new ImgPanel(Toolkit.getDefaultToolkit().createImage("A:\\\\projects\\\\gui\\\\lightbulb.jpg")));p.setBounds(0, 0, ...

java怎么给窗体或者面板设置背景图片?
1利用标签组件来设置\\x0d\\x0a标签本来是一种最简单的组件,为什么可以将它设置成为一个窗体的背景呢?首先还是要了解框架JFrame中的层次结构。JFrame中的层次分布及相对关系是:最底层是JRootPane,第二层是JlayerPane,最上层就是ContentPane,也正是我们常说的内容面板。所以一般我们拖放的控件就是在...

java中我有多个jPanel,如何添加图片
JPanel p=new JPanel();JLabel l=new JLabel();Icon icon=new ImageIcon("D:\\\\rk01.jpg"); \/\/在此直接创建对象 l.setIcon(icon);l.setBounds(0, 0, icon.getIconWidth(),icon.getIconHeight());p.add(l,new Integer(Integer.MIN_VALUE));这样可以给panel加一个背景图 ...

java gui forms 界面怎么换logo
\/\/设置窗口图标方法1 ImageIcon imgIcon=new ImageIcon(".\\\\images\\\\icon.png");this.setIconImage(imgIcon.getImage());\/\/设置窗口图标方法2 \/\/Image imgIcon=Toolkit.getDefaultToolkit().createImage(".\\\\images\\\\icon.png");\/\/this.setIconImage(imgIcon);其中,this可以换成Frame框架的实例名 ...

JAVA界面设计中 图片插入的源码
add(jp);\/\/ 把此窗体加到主窗体 在这里需要注意的是有:1,Panel 的Layout 设置,我用的是边界部局,而Panel 用的默认是 流式部局,而窗体用的是 边界。如果图片比Panel 大小要小的话,那样就会出现满不了屏。这样的话可以设置Panel 的部局为null手动设置JLabel  图片的 size() location();...

vb中控件图形框如何加载图片
1、首先启动visual basic6,新建一个标准exe文件,进入窗体对话框。2、选择form1,设置height属性值为6000,width为8000。3、接着设置borderstyle属性值为4-fixed toolwindow,查看效果变化。4、双击工具箱中的image控件,在窗体上创建image1控件。5、采用步骤2的方法设置height属性值为6000,width为8000,...

Java 面板上显示图片的语句怎么写,最好举个例子...
\/\/ 第一种方法:用JLabel显示图片,此种方法图片是一个UI控件,通过布局管理器可放在面板的任意位置,一般用于较小的图标显示,图片上不能再放置其它控件。\/\/ 通过图片构造一个标签对象 JLabel label = new JLabel(new ImageIcon(image));\/\/ 构造JPanel面板 pane = new JPanel();\/\/ 将标签添加...

相似回答