加载背景图片问题

LB228988 2013-05-31 11:54:21
public void LanuchFrame(){
this.setLocation(100,100);
this.setSize(400,300);
layout=new FlowLayout(FlowLayout.LEFT,20,5);
getContentPane().setLayout(layout);
button1=new JButton("文件传输");
button2=new JButton("图片发送");
button3=new JButton("视频会话");
panel=new JPanel();
panel.add(button1);
panel.add(button2);
panel.add(button3);
getContentPane().add(panel);
add(taContent);
add(tfTxt);
}这是我窗口代码,我想加载一张背景图片,是透明的能够显示图片上方的文字,

就是在这个窗口中加载一张充满整个频幕的图片。
...全文
247 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
LB228988 2013-06-02
  • 打赏
  • 举报
回复
引用 6 楼 FirstHelloWorld 的回复:
郁闷啊!照你的要求写了个,可发现无法设置透明,效果如图 求高人改正啊!代码如下:
package org.zhangming.swing;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;


public class TestBackImage extends JFrame
{
	private JButton button1,button2,button3;
	private JTextField text;
	private JTextArea area;
	private ImageIcon icon;
	private JPanel panelS,panelN;
	private JLabel backLabel;
	TestBackImage()
	{
	     button1=new JButton("文件传输");
	     button2=new JButton("图片发送");
	     button3=new JButton("视频会话");
	     text = new JTextField(20);
	     area = new JTextArea(15,20);
	     
	     button1.addActionListener(new ActionListener(){
	    	 @Override
	    	public void actionPerformed(ActionEvent e)
	    	{
	    		
	    		area.setText(area.getText() + "\n" +text.getText());
	    		text.setText("");
	    		
	    	}
	     });
	     
	     icon = new ImageIcon("e:/Tulips.jpg");
	     backLabel = new JLabel(icon);
	     backLabel.setSize(280,380);
	     icon.setImage(icon.getImage().getScaledInstance(280,380,Image.SCALE_DEFAULT));
	     panelS = new JPanel();
	     panelN = new JPanel();
	     
	     panelN.setLayout(new FlowLayout());
	     panelN.add(button1);
	     panelN.add(button2);
	     panelN.add(button3);
	     
	     panelS.add(area,BorderLayout.CENTER);
	     panelS.add(text,BorderLayout.SOUTH);
	     
	     this.getLayeredPane().add(backLabel,Integer.MIN_VALUE);
	     
	     Container container = this.getContentPane();
	     container.add(panelN,BorderLayout.NORTH);
	     container.add(panelS,BorderLayout.CENTER);
	     
	     //该怎样将JFrame上的ContentPane这层设为透明啊

	    ((JComponent) container).setOpaque(false);

//	     panelN.setOpaque(false);
//	     panelS.setOpaque(false);
//	     AWTUtilities.setWindowOpacity(this, 0.8F); 
	   
	     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	     this.setSize(280,380);
	     this.setResizable(false);
	     this.setVisible(true);
	}
	public static void main(String[] args)
	{
		new TestBackImage();
	}
}
注: 在文本框输入文字,点击“传送文件”按钮方能出现文本域,还有就是其他两个按钮只有当鼠标经过时才会显示出来, 求大神帮忙看下
确实有那个情况,做鞥大神解决。
zhangxm2015 2013-06-01
  • 打赏
  • 举报
回复
郁闷啊!照你的要求写了个,可发现无法设置透明,效果如图
求高人改正啊!代码如下:
package org.zhangming.swing;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;


public class TestBackImage extends JFrame
{
private JButton button1,button2,button3;
private JTextField text;
private JTextArea area;
private ImageIcon icon;
private JPanel panelS,panelN;
private JLabel backLabel;
TestBackImage()
{
button1=new JButton("文件传输");
button2=new JButton("图片发送");
button3=new JButton("视频会话");
text = new JTextField(20);
area = new JTextArea(15,20);

button1.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e)
{

area.setText(area.getText() + "\n" +text.getText());
text.setText("");

}
});

icon = new ImageIcon("e:/Tulips.jpg");
backLabel = new JLabel(icon);
backLabel.setSize(280,380);
icon.setImage(icon.getImage().getScaledInstance(280,380,Image.SCALE_DEFAULT));
panelS = new JPanel();
panelN = new JPanel();

panelN.setLayout(new FlowLayout());
panelN.add(button1);
panelN.add(button2);
panelN.add(button3);

panelS.add(area,BorderLayout.CENTER);
panelS.add(text,BorderLayout.SOUTH);

this.getLayeredPane().add(backLabel,Integer.MIN_VALUE);

Container container = this.getContentPane();
container.add(panelN,BorderLayout.NORTH);
container.add(panelS,BorderLayout.CENTER);

//该怎样将JFrame上的ContentPane这层设为透明啊

((JComponent) container).setOpaque(false);

// panelN.setOpaque(false);
// panelS.setOpaque(false);
// AWTUtilities.setWindowOpacity(this, 0.8F);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(280,380);
this.setResizable(false);
this.setVisible(true);
}
public static void main(String[] args)
{
new TestBackImage();
}
}


注: 在文本框输入文字,点击“传送文件”按钮方能出现文本域,还有就是其他两个按钮只有当鼠标经过时才会显示出来,
求大神帮忙看下
LB228988 2013-05-31
  • 打赏
  • 举报
回复
huntor 2013-05-31
  • 打赏
  • 举报
回复
自己看Swing Hacks这本书吧,
LB228988 2013-05-31
  • 打赏
  • 举报
回复
怎么没人啊,自己顶一下
LB228988 2013-05-31
  • 打赏
  • 举报
回复
引用 2 楼 huntor 的回复:
我记得Swing Hacks书里有这个技巧
求完整的代码啊
huntor 2013-05-31
  • 打赏
  • 举报
回复
我记得Swing Hacks书里有这个技巧

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧