swing中为按钮加入背景图片

space_Wind 2008-12-21 12:02:33
我要做一个applet程序,需要在指定的BorderLayout中加入背景和按钮组件。我用add(背景图片,BorderLayout.EAST,-1);add(按钮,BorderLayout.EAST,0); 这种方法根本加不上去,按钮把背景图完全的覆盖了(虽然按钮比背景图小很多)。试了很多的方法都不好用。希望高手能帮助小弟一下。在这里万分的感谢!最好可以给我一个简简单单的实例,不要太复杂!
(谢谢各位,最好不要说让我去看书什么之类的话,如果我有一个月的时间我就会去看了)
...全文
1426 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
space_Wind 2008-12-31
  • 打赏
  • 举报
回复
谢谢你,我用你的方法做的!
闲人のMr丶Wu 2008-12-30
  • 打赏
  • 举报
回复
Image image = Toolkit.getDefaultToolkit().getImage(
"image/mrv_bgimg.png");
Icon icon = new ImageIcon(image);

JButton b=new JButton();
b.setIcon(icon); //这样就可以显示出你的效果了!
focusforce 2008-12-30
  • 打赏
  • 举报
回复
3楼思路是对的,问题是要设置背景,重载JButton的paint方法吧
ly1984119 2008-12-25
  • 打赏
  • 举报
回复
package jframe;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.BoxLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class FrameTest extends JFrame implements ActionListener {

private JPanel j;

private JButton b = new JButton();

public FrameTest(String title) {
super.setTitle(title);
this.setSize(new Dimension(500, 300));
this.setLocation(200, 200);
this.setLayout(new BorderLayout());

j = new JPanel() {
public void paint(Graphics g) {
super.paint(g);
// 下面是取得你的背景图片,你根据你自己的要求来取得这个图片,不管什么方法,得到就OK
ImageIcon icon = new ImageIcon(ClassLoader.getSystemResource("jframe\\xxx.jpg"));
icon.paintIcon(this, g, 0, 0);
// 下面是按钮的,如果放到外面一拖放就被jpanel刷掉啦(一定要写包名,图片自己换吧)
ImageIcon icon2 = new ImageIcon(ClassLoader.getSystemResource("jframe\\x2.jpg"));
b.setIcon(icon2);
}
};

b.setSize(new Dimension(50, 25));
b.setText("click");
j.setSize(new Dimension(300, 200));
j.setLayout(new BoxLayout(j,BoxLayout.Y_AXIS));
j.add(b);
this.add(j, BorderLayout.CENTER);
this.setVisible(true);

this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}

@Override
public void actionPerformed(ActionEvent e) {

}

public static void main(String[] args) {
FrameTest ft = new FrameTest("FrameTest");
}
}
刘葛曦 2008-12-25
  • 打赏
  • 举报
回复
同意
xtiu77 2008-12-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 nj_dobetter 的回复:]
ImageIcon icon= new ImageIcon("fileName");
button.setIcon(icon);
[/Quote]
同意
ffumax 2008-12-25
  • 打赏
  • 举报
回复
帮顶
talent_marquis 2008-12-25
  • 打赏
  • 举报
回复
给你个思路
把背景放到一个JPanel里,JPanel的Layout设为FlowLayout
把Button放到这个JPanel里

再把JPanel放到指定层为BorderLayout的那个上层容器里,这样背景图和按钮就不会互相打架了。
swoky 2008-12-22
  • 打赏
  • 举报
回复
没为按钮加过背景,只做过JPanel的

JPanel topPanel = new JPanel(){

public void paint(Graphics g){
super.paint(g);
//下面是取得你的背景图片,你根据你自己的要求来取得这个图片,不管什么方法,得到就OK
ImageIcon icon = new ImageIcon(ClassLoader.getSystemResource("com/res/xxx.jpg"));
icon.paintIcon(this, g, 0, 0);
}
};

你可以照着试下,看可以不,要是可以别忘了告诉我
wap21 2008-12-21
  • 打赏
  • 举报
回复
帮顶
nj_dobetter 2008-12-21
  • 打赏
  • 举报
回复
ImageIcon icon= new ImageIcon("fileName");
button.setIcon(icon);
内容: 1 转换基本数据类型;运算符;计算阶乘; 2 复数类;java的参数传递;自定义形状类;类的加载顺序;方法和变量在继承时的覆盖和隐藏;排序类; 3数字 数字类;格式化数字;转换数字进制;生成随机数; 4数组和集合 使用Arrays类;动态调整数组长度;java为数据结构中的列表定义了一个接口类java.util.list同时提供了3个实现类,分别是ArrayList、Vector、LinkedList使用; 生成不重复的随机数序列;列表、集合与数组的互相转换;java为数据结构中的映射定义一个接口java.util.Map,有四个实现类HashMap Hashtable LinkedHashMap TreeMap用法和区别;对Map排序; 5字符串 使用String;判断一个字符串是否是合法的java标识符;使用StringBuffer;IP地址转化成整数,整数转化成IP地址; 十八为身份证格式验证;表达式解析器;字符串编码的转换;字符串对齐器;密码加密和验证(MD5); 制作命令行程序;使用正则表达式操作字符串;使用正则表达式验证电话号码的格式; 6java异常处理 throw和throws、try和catch;自定义异常类;使用finally;使用异常的技巧和原则; 7 IO输入输出流 获取文件的基本信息;列出指定目录下的文件,并可过滤文件;创建文件和目录;删除文件和目录;移动文件和目录; 复制文件和目录;一个简单的文件搜索器; 多种方式读文件内容, 按字节读取文件内容、按字符读取文件内容、按行读取文件内容、随机读取文件内容; 多种方式写文件内容, 按字节写文件内容、按字符写文件内容、按行写文件内容 ; 添加内容到文件结尾;文件的分割和合并;使用StreamTokenizer统计文件的字符数; 序列化和反序列化对象(将不长用的对象暂时持久化到文件中为对象的序列化,反之用时再把对象恢复到内存为反序列化); 控制对象的序列化和反序列化; 读jar包的资源文件;用zip格式压缩 和解压文件;操作Excel文件;操作Pdf文件;自定义日志文件类; 8线程 线程的启动 和停止;线程的互斥;线程的协作;线程join;生产者、消费者问题;线程的优先级;列出虚拟机中所有的线程;守护线程Daemon;线程池;一个死锁的例子; 定时器Timer:包括在指定时间执行任务,在指定时间之后执行任务以及在某个时间之后每隔时间段重复执行的任务; 9 Java GUI 日历:使用swing和awt实现一个图形化的日历可以查询星期、日期和年份信息(CalenderTrain.java);标准计算器(Callulator.java);更改组建外观,对日历设置几个显示外观(lookandfeel.java);自定义对话框DialogWindows;制作欢迎界面SplashWindow.java; 10 java图形 一个圆形按钮,当单击按钮时颜色发生变化CircleButton.java; 捕捉屏幕相当于键盘上的PrintScreen,CsreenCaputure.java; 缩放图片JPGTransforme.java; 2d图形,实现一个2d画板,能够画2d的线、圆和矩形,能指定图形的颜色并且能够撤销和恢复图形,command.java; 3d图形,Graphic3d.java; 一个时钟程序,能够显示星期和日期,变化背景和透明度Clock.java; 11 java多媒体 滚动的消息,实现一个简单的动画,具有滚动效果的文本消息RollingMessage.java; 三维弹球,BouncingB.java; 贪吃蛇游戏SnakeModel.java; java的声音处理,介绍java中如何处理声音,包括实现响铃,播放wav,au等音频文件,以及控制声音的大小和音量,Beep.java; 媒体播放器,JMFMediaPlayer.java; 12反射 是java程序开发的特征之一,允许java程序对自身进行检查,并能直接操作程序的内部属性; instanceof操作符,instanceof.java; 获取类的信息,ViewClassInfoJrame.java; 动态调用类的方法,CallMetod.java; 13、网络编程 获取URL信息,主要是使用URLConnection类,GetUrlInfo.java; web浏览器,webbrowser.java; 获取IP地址和域名,GetIpAddress.java; Http客户端,httpClient.java; 基本socket编程,介绍socket编程的基本步骤,启动socket服务器后,在打开socket的客户端,在输入框里输入消息发送到服务器,服务器受到消息后返回给客户端; Http服务器,httpsever.java; 一个支持多线程的服务器框架,GeneralServer.java; 代理服务器,ProxyServer.java; telnet客户端,访问系统的telnet服务实质上是与telnet服务建立socket连接,默认的telnet服务的端口是23,TelnetClient.java; UDP编程,包括收发udp报文; 聊天室服务器端,Chatserver.java;聊天室客户端,ChatClient.java; Ftp客户端,Mainframe.java; 14数据库 连接各种数据库DBconnector.java; 获得数据库和表的元数据Getmetadata.java; 查询和更新数据库OperateDatadb.java; 批处理,介绍如何一次执行一批sql语句,这些sql语句用插入、更新和删除等相关操作; 提交和回滚transaction.java; 使用PreparedStatement,动态执行sql语句,UsingPreparedStatement.java; 读写二进制数据,BinaryData.java; 读写Blob数据,blob数据常以二进制形式存储比较大的文件数据,如图片、视频文件等,本文介绍如何往数据库中读写blob数据,BlobData.java; 使用ResultSet更新数据库,UpdateWithResultSet.java; 使用RowSet,.UsingRowSet.java; 调用存储过程,StorageProcedure.java; 一个数据库连接池,JDBCInfo.java; 15 applet java可以编写两类程序,applications和applet,applications可以在控制台直接运行,与其他高级编程语言没有太大区别,而java的特色在于它具有编制小应用程序的功能,applet可以在internet上传输并在兼容java的web浏览器中运行的程序; applet时钟,Clock.java; 处理鼠标和键盘,用户在applet上按下键盘时,该实列能把按下的建显示出来,点击鼠标时能把鼠标事件和鼠标坐标显示出来,MouseAndKeyapplet.java; 英文打字小游戏,TypingGame.java; applet间通信; 汉诺塔游戏, 16 j2se5.0 新特性 自动装箱和拆箱; 新的for循环; 枚举类型; 静态导入; 格式化输出; 使用ProcessBuilder执行本地命令; 泛型编程; 监控和管理虚拟机;新的线程执行架构; 线程锁; 线程条件; 线程同步装置:semaphore countdownlatch cyclicbarrier exchanger; 17 java与xml 用dom处理xml文档; 用sax处理xml文档; 用xslt转换xml; 对象与xml的转换; 18 java mail 使用smtp协议发送简单邮件; 发送带附件的邮件; 给多人发送邮件; 使用pop3接收邮件; 19jsp与servlet 获取客户端的真实ip地址; jsp无刷新聊天室; 设置和读取cookie; 上传文件; 用servlet生成图形验证码; 用servlet实现分页查看数据库;

62,614

社区成员

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

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