请教,怎样在java中把Button的背景改做一个图片 如果我是用JDK开发,该怎么做? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 import javax.swing.*;......JButton btn=new JButton("OK",image.gif); 谢谢两位的回答,还有一个问题,java.swing.*是不是只有在JDK1.3的版本里面才有?我用JDK1.2.1,总是出错 JButton btn=new JButton("OK",image.gif); 那么,上述image.gif的路径如何? 我用JButton btn=new JButton("OK",story_button_1.gif); 报错:undefined variable or class name:story_button_1.gifJButton btn=new JButton("OK",story_button_1.gif); ^ ImageIcon o = new ImageIcon("w.jpg");JButton jb = new JButton("kkk",o); 应该是javax.swing.*; 注意不时java.swing.*; 还是有问题源程序:import java.awt.*;import java.applet.*;import javax.swing.*;public class TestGUI03 extends Applet{ ImageIcon pic; private Frame f; private JButton b1; private Button b2; public void start(){ TestGUI03 guiWindow=new TestGUI03(); guiWindow.go(); } public void go(){ f=new Frame("Test EXAMPLE"); f.setLayout(new FlowLayout()); pic=new ImageIcon("pic.gif"); JButton b1=new JButton("OK",pic); b2=new Button("Don't Press Me"); f.add(b1); f.add(b2); f.pack(); f.setVisible(true); }}编译能够通过,但是在用appletviewer运行的时候,出现:java.security.AccessControlException: access denied (java.io.FilePermission pic.gif read) at java.security.AccessControlContext.checkPermission(Compiled Code) at java.security.AccessController.checkPermission(Compiled Code) at java.lang.SecurityManager.checkPermission(Compiled Code) at java.lang.SecurityManager.checkRead(Compiled Code) at sun.awt.SunToolkit.getImageFromHash(SunToolkit.java:230) at sun.awt.SunToolkit.getImage(SunToolkit.java:244) at javax.swing.ImageIcon.<init>(ImageIcon.java:64) at javax.swing.ImageIcon.<init>(ImageIcon.java:83) at TestGUI03.go(TestGUI03.java:21) at TestGUI03.start(TestGUI03.java:16) at sun.applet.AppletPanel.run(Compiled Code) at java.lang.Thread.run(Thread.java:479)然后把源程序改为:import java.awt.*;import java.applet.*;import javax.swing.*;public class TestGUI03 extends Applet{ ImageIcon pic; Image picture; private Frame f; private JButton b1; private Button b2; public void init(){ picture=getImage(getDocumentBase(), "pic.gif"); } public void start(){ TestGUI03 guiWindow=new TestGUI03(); guiWindow.go(); } public void go(){ f=new Frame("GUI EXAMPLE"); f.setLayout(new FlowLayout()); pic=new ImageIcon(picture); JButton b1=new JButton("OK",pic); b2=new Button("Don't Press Me"); f.add(b1); f.add(b2); f.pack(); f.setVisible(true); }}则抛出:java.lang.NullPointerException at javax.swing.ImageIcon.<init>(ImageIcon.java:124) at TestGUI03.go(TestGUI03.java:21) at TestGUI03.start(TestGUI03.java:16) at sun.applet.AppletPanel.run(Compiled Code) at java.lang.Thread.run(Thread.java:479) public class TestGUI03 extends JApplet试试 [ImageButton.java] import java.awt.*; import java.awt.event.*; import java.awt.image.*; import java.net.*; public class ImageButton extends Canvas { protected ActionListener actionListener = null; int w,h; boolean clicked; boolean down; boolean enabled; Image UPimage; Image DOWNimage; Image disabledimage; public ImageButton(URL up_b, URL down_b) { clicked=false; down=false; enabled=true; InitImage(up_b,down_b); setSize(w,h); addMouseListener(new ImageButtonMouseListener()); addMouseMotionListener(new ImageButtonMouseMotionListener()); } public void InitImage(URL up, URL down) { MediaTracker tracker; try { UPimage = getToolkit().getImage(up); DOWNimage = getToolkit().getImage(down); tracker = new MediaTracker(this); tracker.addImage(UPimage,0); tracker.addImage(DOWNimage,1); tracker.waitForAll(); } catch (InterruptedException e) { e.printStackTrace(); } disabledimage=createImage(new FilteredImageSource (UPimage.getSource(),new ImageButtonDisableFilter())); w=UPimage.getWidth(this); h=UPimage.getHeight(this); } public void paint(Graphics g) { if (down) { g.drawImage(DOWNimage,0,0,this); } else { if (enabled) { g.drawImage(UPimage,0,0,this); } else { g.drawImage(disabledimage,0,0,this); } } } public void setEnabled(boolean b) { enabled=b; repaint(); } public boolean isEnabled() { return (enabled); } public void addActionListener(ActionListener l) { actionListener = AWTEventMulticaster.add(actionListener,l); } public void removeActionListener(ActionListener l) { actionListener = AWTEventMulticaster.remove(actionListener, l); } public class ImageButtonMouseListener extends MouseAdapter { public void mousePressed(MouseEvent e) { Point p = e.getPoint(); if ((p.x < w)&&(p.y < h)&&(p.x > 0)&&(p.y > 0)&&(enabled==true)) { clicked=true; down=true; repaint(); } } public void mouseReleased(MouseEvent e) { Point p = e.getPoint(); if (down) { down=false; repaint(); } if ((p.x < w)&&(p.y < h)&&(p.x > 0)&&(p.y > 0)&&(clicked==true)) { ActionEvent ae = new ActionEvent(e.getComponent(),0,"click"); if (actionListener != null) { actionListener.actionPerformed(ae); } } clicked=false; } } public class ImageButtonMouseMotionListener extends MouseMotionAdapter { public void mouseDragged(MouseEvent e) { Point p = e.getPoint(); if ((p.x < w)&&(p.y < h)&&(p.x > 0)&&(p.y > 0)&&(clicked==true)) { if (down==false) { down=true; repaint(); } } else { if (down==true) { down=false; repaint(); } } } } public Dimension getPreferredSize() { return (new Dimension(UPimage.getWidth(this), UPimage.getHeight(this))); } public Dimension getMinimumSize() { return getPreferredSize(); } class ImageButtonDisableFilter extends RGBImageFilter { public ImageButtonDisableFilter() { canFilterIndexColorModel=true; } public int filterRGB(int x, int y, int rgb) { return (rgb & ~0xff000000) | 0x80000000; } } } [TestImageButton.java] import java.awt.*; import java.awt.event.*; import java.applet.*; import java.net.*; public class TestImageButton extends Applet implements ActionListener,ItemListener { ImageButton ib; Checkbox c; public void init() { setLayout(new FlowLayout()); try { ib = new ImageButton (new URL(getCodeBase(), "Gumby.gif"), new URL(getCodeBase(), "Gumbyblu.gif")); c = new Checkbox("disable"); ib.addActionListener(this); c.addItemListener(this); add(ib); add(c); } catch (Exception e) { e.printStackTrace(); } } public void actionPerformed(ActionEvent e) { if (e.getSource() == ib) System.out.println("Click ImageButton"); } public void itemStateChanged(ItemEvent ie) { ib.setEnabled(!ib.isEnabled()); } } awt 文本框问题 图片为什么显示不了? 李白饮酒问题 超简单的问题: 怎么改变 swing 窗口的背景颜色?? java新手问题 请大家帮帮忙 什么样的传值方式,可以不改变传来对象的属性? 线程怎么不能停止?? 关于数据库的连接池 一个servlet的问题 菜鸟问题,简单投硬币 送分64分:jbuilder5中用jdbc连不了本地数据库。 大家帮我看看,这段程序执行后输出什么??
...
...
JButton btn=new JButton("OK",image.gif);
那么,上述image.gif的路径如何?
报错:undefined variable or class name:story_button_1.gif
JButton btn=new JButton("OK",story_button_1.gif);
^
JButton jb = new JButton("kkk",o);
源程序:
import java.awt.*;
import java.applet.*;
import javax.swing.*;
public class TestGUI03 extends Applet{
ImageIcon pic;
private Frame f;
private JButton b1;
private Button b2;
public void start(){
TestGUI03 guiWindow=new TestGUI03();
guiWindow.go();
}
public void go(){
f=new Frame("Test EXAMPLE");
f.setLayout(new FlowLayout());
pic=new ImageIcon("pic.gif");
JButton b1=new JButton("OK",pic);
b2=new Button("Don't Press Me");
f.add(b1);
f.add(b2);
f.pack();
f.setVisible(true);
}
}编译能够通过,但是在用appletviewer运行的时候,出现:
java.security.AccessControlException: access denied (java.io.FilePermission pic.
gif read)
at java.security.AccessControlContext.checkPermission(Compiled Code)
at java.security.AccessController.checkPermission(Compiled Code)
at java.lang.SecurityManager.checkPermission(Compiled Code)
at java.lang.SecurityManager.checkRead(Compiled Code)
at sun.awt.SunToolkit.getImageFromHash(SunToolkit.java:230)
at sun.awt.SunToolkit.getImage(SunToolkit.java:244)
at javax.swing.ImageIcon.<init>(ImageIcon.java:64)
at javax.swing.ImageIcon.<init>(ImageIcon.java:83)
at TestGUI03.go(TestGUI03.java:21)
at TestGUI03.start(TestGUI03.java:16)
at sun.applet.AppletPanel.run(Compiled Code)
at java.lang.Thread.run(Thread.java:479)
然后把源程序改为:
import java.awt.*;
import java.applet.*;
import javax.swing.*;
public class TestGUI03 extends Applet{
ImageIcon pic;
Image picture;
private Frame f;
private JButton b1;
private Button b2;
public void init(){
picture=getImage(getDocumentBase(),
"pic.gif");
}
public void start(){
TestGUI03 guiWindow=new TestGUI03();
guiWindow.go();
}
public void go(){
f=new Frame("GUI EXAMPLE");
f.setLayout(new FlowLayout());
pic=new ImageIcon(picture);
JButton b1=new JButton("OK",pic);
b2=new Button("Don't Press Me");
f.add(b1);
f.add(b2);
f.pack();
f.setVisible(true);
}
}
则抛出:
java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(ImageIcon.java:124)
at TestGUI03.go(TestGUI03.java:21)
at TestGUI03.start(TestGUI03.java:16)
at sun.applet.AppletPanel.run(Compiled Code)
at java.lang.Thread.run(Thread.java:479)
import java.awt.event.*;
import java.awt.image.*;
import java.net.*; public class ImageButton extends Canvas {
protected ActionListener actionListener = null;
int w,h;
boolean clicked;
boolean down;
boolean enabled;
Image UPimage;
Image DOWNimage;
Image disabledimage; public ImageButton(URL up_b, URL down_b) {
clicked=false;
down=false;
enabled=true;
InitImage(up_b,down_b);
setSize(w,h);
addMouseListener(new ImageButtonMouseListener());
addMouseMotionListener(new ImageButtonMouseMotionListener());
} public void InitImage(URL up, URL down) {
MediaTracker tracker;
try {
UPimage = getToolkit().getImage(up);
DOWNimage = getToolkit().getImage(down);
tracker = new MediaTracker(this);
tracker.addImage(UPimage,0);
tracker.addImage(DOWNimage,1);
tracker.waitForAll();
}
catch (InterruptedException e) {
e.printStackTrace();
}
disabledimage=createImage(new FilteredImageSource
(UPimage.getSource(),new ImageButtonDisableFilter()));
w=UPimage.getWidth(this);
h=UPimage.getHeight(this);
} public void paint(Graphics g) {
if (down) {
g.drawImage(DOWNimage,0,0,this);
}
else {
if (enabled) {
g.drawImage(UPimage,0,0,this);
}
else {
g.drawImage(disabledimage,0,0,this);
}
}
} public void setEnabled(boolean b) {
enabled=b;
repaint();
} public boolean isEnabled() {
return (enabled);
} public void addActionListener(ActionListener l) {
actionListener =
AWTEventMulticaster.add(actionListener,l);
}
public void removeActionListener(ActionListener l) {
actionListener =
AWTEventMulticaster.remove(actionListener, l);
} public class ImageButtonMouseListener extends MouseAdapter {
public void mousePressed(MouseEvent e) {
Point p = e.getPoint();
if ((p.x < w)&&(p.y < h)&&(p.x > 0)&&(p.y > 0)&&(enabled==true)) {
clicked=true;
down=true;
repaint();
}
}
public void mouseReleased(MouseEvent e) {
Point p = e.getPoint();
if (down) {
down=false;
repaint();
}
if ((p.x < w)&&(p.y < h)&&(p.x > 0)&&(p.y > 0)&&(clicked==true)) {
ActionEvent ae =
new ActionEvent(e.getComponent(),0,"click");
if (actionListener != null) {
actionListener.actionPerformed(ae);
}
}
clicked=false;
}
}
public class ImageButtonMouseMotionListener extends
MouseMotionAdapter {
public void mouseDragged(MouseEvent e) {
Point p = e.getPoint();
if ((p.x < w)&&(p.y < h)&&(p.x > 0)&&(p.y > 0)&&(clicked==true)) {
if (down==false) {
down=true;
repaint();
}
}
else {
if (down==true) {
down=false;
repaint();
}
}
}
} public Dimension getPreferredSize() {
return (new Dimension(UPimage.getWidth(this),
UPimage.getHeight(this)));
} public Dimension getMinimumSize() {
return getPreferredSize();
} class ImageButtonDisableFilter extends RGBImageFilter {
public ImageButtonDisableFilter() {
canFilterIndexColorModel=true;
}
public int filterRGB(int x, int y, int rgb) {
return (rgb & ~0xff000000) | 0x80000000;
}
}
}
[TestImageButton.java] import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.net.*;
public class TestImageButton extends Applet
implements ActionListener,ItemListener {
ImageButton ib;
Checkbox c; public void init() {
setLayout(new FlowLayout());
try {
ib = new ImageButton
(new URL(getCodeBase(), "Gumby.gif"),
new URL(getCodeBase(), "Gumbyblu.gif"));
c = new Checkbox("disable");
ib.addActionListener(this);
c.addItemListener(this);
add(ib);
add(c);
}
catch (Exception e) {
e.printStackTrace();
}
} public void actionPerformed(ActionEvent e) {
if (e.getSource() == ib) System.out.println("Click ImageButton");
} public void itemStateChanged(ItemEvent ie) {
ib.setEnabled(!ib.isEnabled());
}
}