import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent;import javax.swing.*;import Player.Welcome.CanvasPanel;public class Main extends JFrame { private Container container; private MyButton playbutton,stopbutton,nextbutton,prebutton; private Image img; private CanvasPanel c_p; JPanel j; public Main() { container = getContentPane(); container.setLayout(null); setVisible(true); setSize(new Dimension(290, 160)); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); init(); j = new JPanel(); j.setLayout(null); c_p = new CanvasPanel(); c_p.setBounds(0,0,290,160); j.add(c_p); j.setBounds(0,0,290,160); container.add(j); } public void init(){ button(); addbutton(); }
public void button(){
prebutton = new MyButton(new ImageIcon("image/pre1.png")); playbutton = new MyButton(new ImageIcon("image/play1.png")); stopbutton = new MyButton(new ImageIcon("image/stop1.png")); nextbutton = new MyButton(new ImageIcon("image/next1.png"));
prebutton.addMouseListener(new MouseAdapter() { public void mouseEntered(MouseEvent e) { prebutton.setIcon(new ImageIcon("image/pre2.png")); } public void mouseExited(MouseEvent e) { prebutton.setIcon(new ImageIcon("image/pre1.png")); } });
playbutton.addMouseListener(new MouseAdapter() { public void mouseEntered(MouseEvent e) { playbutton.setIcon(new ImageIcon("image/play2.png")); } public void mouseExited(MouseEvent e) { playbutton.setIcon(new ImageIcon("image/play1.png")); } });
stopbutton.addMouseListener(new MouseAdapter(){ public void mouseEntered(MouseEvent e) { stopbutton.setIcon(new ImageIcon("image/stop2.png")); } public void mouseExited(MouseEvent e) { stopbutton.setIcon(new ImageIcon("image/stop1.png")); } });
nextbutton.addMouseListener(new MouseAdapter(){ public void mouseEntered(MouseEvent e) { nextbutton.setIcon(new ImageIcon("image/next2.png")); } public void mouseExited(MouseEvent e) { nextbutton.setIcon(new ImageIcon("image/next1.png")); } }); } public void addbutton(){
prebutton = new MyButton(new ImageIcon("image/pre1.png")); playbutton = new MyButton(new ImageIcon("image/play1.png")); stopbutton = new MyButton(new ImageIcon("image/stop1.png")); nextbutton = new MyButton(new ImageIcon("image/next1.png"));
prebutton.addMouseListener(new MouseAdapter() { public void mouseEntered(MouseEvent e) { prebutton.setIcon(new ImageIcon("image/pre2.png")); } public void mouseExited(MouseEvent e) { prebutton.setIcon(new ImageIcon("image/pre1.png")); } });
playbutton.addMouseListener(new MouseAdapter() { public void mouseEntered(MouseEvent e) { playbutton.setIcon(new ImageIcon("image/play2.png")); } public void mouseExited(MouseEvent e) { playbutton.setIcon(new ImageIcon("image/play1.png")); } });
stopbutton.addMouseListener(new MouseAdapter(){ public void mouseEntered(MouseEvent e) { stopbutton.setIcon(new ImageIcon("image/stop2.png")); } public void mouseExited(MouseEvent e) { stopbutton.setIcon(new ImageIcon("image/stop1.png")); } });
nextbutton.addMouseListener(new MouseAdapter(){ public void mouseEntered(MouseEvent e) { nextbutton.setIcon(new ImageIcon("image/next2.png")); } public void mouseExited(MouseEvent e) { nextbutton.setIcon(new ImageIcon("image/next1.png")); } }); } public void addbutton(){
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;import javax.swing.*;import Player.Welcome.CanvasPanel;public class Main extends JFrame {
private Container container;
private MyButton playbutton,stopbutton,nextbutton,prebutton;
private Image img;
private CanvasPanel c_p;
JPanel j;
public Main() {
container = getContentPane();
container.setLayout(null);
setVisible(true);
setSize(new Dimension(290, 160));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
init();
j = new JPanel();
j.setLayout(null);
c_p = new CanvasPanel();
c_p.setBounds(0,0,290,160);
j.add(c_p);
j.setBounds(0,0,290,160);
container.add(j);
}
public void init(){
button();
addbutton();
}
public void button(){
prebutton = new MyButton(new ImageIcon("image/pre1.png"));
playbutton = new MyButton(new ImageIcon("image/play1.png"));
stopbutton = new MyButton(new ImageIcon("image/stop1.png"));
nextbutton = new MyButton(new ImageIcon("image/next1.png"));
prebutton.addMouseListener(new MouseAdapter() {
public void mouseEntered(MouseEvent e) {
prebutton.setIcon(new ImageIcon("image/pre2.png")); } public void mouseExited(MouseEvent e) {
prebutton.setIcon(new ImageIcon("image/pre1.png")); }
});
playbutton.addMouseListener(new MouseAdapter() {
public void mouseEntered(MouseEvent e) {
playbutton.setIcon(new ImageIcon("image/play2.png")); } public void mouseExited(MouseEvent e) {
playbutton.setIcon(new ImageIcon("image/play1.png")); }
});
stopbutton.addMouseListener(new MouseAdapter(){
public void mouseEntered(MouseEvent e) {
stopbutton.setIcon(new ImageIcon("image/stop2.png")); } public void mouseExited(MouseEvent e) {
stopbutton.setIcon(new ImageIcon("image/stop1.png")); }
});
nextbutton.addMouseListener(new MouseAdapter(){
public void mouseEntered(MouseEvent e) {
nextbutton.setIcon(new ImageIcon("image/next2.png")); } public void mouseExited(MouseEvent e) {
nextbutton.setIcon(new ImageIcon("image/next1.png")); }
}); }
public void addbutton(){
prebutton.setBounds(135,80,40,40);
playbutton.setBounds(165, 80, 40, 40);
stopbutton.setBounds(195,80,40,40);
nextbutton.setBounds(225,80,40,40);
container.add(prebutton);
container.add(playbutton);
container.add(stopbutton);
container.add(nextbutton);
} public static void main(String[] args) {
new Main();
}
class CanvasPanel extends Canvas {
public void paint(Graphics g) {
super.paint(g);
Graphics2D g1 = (Graphics2D) g;
img = Toolkit.getDefaultToolkit().getImage("image/m.png");
g1.drawImage(img, 0, 0, this);
}
}}
1.将按钮放到另一个容器中, 或,
2.将按钮改成awt的Buttonl类。很遗憾,这样的按钮中无法按装图标了。
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;import javax.swing.*;import Player.Welcome.CanvasPanel;public class Main extends JFrame {
private Container container;
private MyButton playbutton,stopbutton,nextbutton,prebutton;
private Image img;
private CanvasPanel c_p;
private JPanel j;
public Main() {
container = getContentPane();
container.setLayout(null);
setVisible(true);
setSize(new Dimension(290, 160));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
init();
j = new JPanel();
j.setLayout(null);
c_p = new CanvasPanel();
c_p.setBounds(0,0,290,160);
j.add(c_p);
j.setBounds(105,40,160,160);
j.add(prebutton);
j.add(playbutton);
j.add(stopbutton);
j.add(nextbutton);
container.add(c_p);
container.add(j);
}
public void init(){
button();
addbutton();
}
public void button(){
prebutton = new MyButton(new ImageIcon("image/pre1.png"));
playbutton = new MyButton(new ImageIcon("image/play1.png"));
stopbutton = new MyButton(new ImageIcon("image/stop1.png"));
nextbutton = new MyButton(new ImageIcon("image/next1.png"));
prebutton.addMouseListener(new MouseAdapter() {
public void mouseEntered(MouseEvent e) {
prebutton.setIcon(new ImageIcon("image/pre2.png")); } public void mouseExited(MouseEvent e) {
prebutton.setIcon(new ImageIcon("image/pre1.png")); }
});
playbutton.addMouseListener(new MouseAdapter() {
public void mouseEntered(MouseEvent e) {
playbutton.setIcon(new ImageIcon("image/play2.png")); } public void mouseExited(MouseEvent e) {
playbutton.setIcon(new ImageIcon("image/play1.png")); }
});
stopbutton.addMouseListener(new MouseAdapter(){
public void mouseEntered(MouseEvent e) {
stopbutton.setIcon(new ImageIcon("image/stop2.png")); } public void mouseExited(MouseEvent e) {
stopbutton.setIcon(new ImageIcon("image/stop1.png")); }
});
nextbutton.addMouseListener(new MouseAdapter(){
public void mouseEntered(MouseEvent e) {
nextbutton.setIcon(new ImageIcon("image/next2.png")); } public void mouseExited(MouseEvent e) {
nextbutton.setIcon(new ImageIcon("image/next1.png")); }
}); }
public void addbutton(){
prebutton.setBounds(135,80,40,40);
playbutton.setBounds(165, 80, 40, 40);
stopbutton.setBounds(195,80,40,40);
nextbutton.setBounds(225,80,40,40);
} public static void main(String[] args) {
new Main();
}
class CanvasPanel extends Canvas {
public void paint(Graphics g) {
super.paint(g);
Graphics2D g1 = (Graphics2D) g;
img = Toolkit.getDefaultToolkit().getImage("image/m.png");
g1.drawImage(img, 0, 0, this);
}
}}变成这样还是不行啊
package untitled3;import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.imageio.ImageIO;
import javax.swing.*;
import java.io.File;public class Main
extends JFrame {
private Container container;
private JButton playbutton, stopbutton, nextbutton, prebutton;
private Image img;
private CanvasPanel c_p; public Main() {
container = getContentPane();
container.setLayout(null);
setVisible(true);
setSize(new Dimension(290, 160));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
init();
c_p = new CanvasPanel();
c_p.setBounds(0, 0, 290, 160);
container.add(c_p);
c_p.add(prebutton);
c_p.add(playbutton);
c_p.add(stopbutton);
c_p.add(nextbutton); } public void init() {
button();
addbutton();
} public void button() {
prebutton = new JButton(new ImageIcon("image/pre1.png"));
playbutton = new JButton(new ImageIcon("image/play1.png"));
stopbutton = new JButton(new ImageIcon("image/stop1.png"));
nextbutton = new JButton(new ImageIcon("image/next1.png"));
//....
} public void addbutton() { prebutton.setBounds(135, 80, 40, 40);
playbutton.setBounds(165, 80, 40, 40);
stopbutton.setBounds(195, 80, 40, 40);
nextbutton.setBounds(225, 80, 40, 40); } public static void main(String[] args) {
new Main();
} class CanvasPanel
extends JPanel {
public void paint(Graphics g) { Graphics2D g1 = (Graphics2D) g;
try {
img = ImageIO.read(ClassLoader.getSystemResource("image/m.jpg"));
}
catch (Exception e) {
System.out.print(e);
}
g1.drawImage(img, 0, 0, this);
super.paintComponents(g);
}
}}我这样就行了,楼主自己试试看
重写paint()方法要注意一下,我怀疑是super.paint()那里错了,所以我改了一下
class CanvasPanel extends Canvas {
public void paint(Graphics g) {
super.paint(g); // 这里绘制组件自己已经在上面添加的button等
Graphics2D g1 = (Graphics2D) g;
img = Toolkit.getDefaultToolkit().getImage("image/m.png");
g1.drawImage(img, 0, 0, this); //这里又在上面绘图,所以把组件冲刷掉了。
}
}
调下绘制顺序
最好是用paintComponent方法,不用调顺序:class CanvasPanel extends Canvas {
public void paintComponent(Graphics g) {
super.paint(g);
Graphics2D g1 = (Graphics2D) g;
img = Toolkit.getDefaultToolkit().getImage("image/m.png");
g1.drawImage(img, 0, 0, this);
}
}
private Image skinImg;
public SkinedUI(Image skinImg) {
this.skinImg = skinImg;
}
public void paint(Graphics g, JComponent c) {
g.drawImage(skinImg, 0, 0, null);
}
}把Canvas换成JPanel,Canvas 是awt里的,最好别跟swing混用 Image img = Toolkit.getDefaultToolkit().getImage("image/m.png");
JPanel panel = new JPanel();
panel.setUI(new SkinedUI(img));//这里设置ui
panel.setBounds(0, 0, 290, 160);
container.add(panel);
panel.add(prebutton);
......
下一个问题,public void mouseEntered(MouseEvent e) {
prebutton.setIcon(new ImageIcon("image/pre2.png"));
}
public void mouseExited(MouseEvent e) {
prebutton.setIcon(new ImageIcon("image/pre1.png"));
}
}); 楼主的意思是想鼠标进入和离开的时候分别显示不同的外观吧,API里有现成的,这样就行了:JButton prebutton = new JButton(new ImageIcon("image/pre1.png"));
prebutton.setRolloverIcon(new ImageIcon(("image/pre2.png"));//这里设置鼠标进入后的外观图片
这样改应该可以了,我没图片,你试下吧:import java.awt.*;
import javax.swing.*;public class Main extends JFrame {
private static final long serialVersionUID = 6255547924567748039L;
public Main() {
Container container = getContentPane();
container.setLayout(null);
setSize(new Dimension(290, 160));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
initComponents(container);
setVisible(true);
} public void initComponents(Container c) {
JPanel panel = new JPanel() {
Image img = Toolkit.getDefaultToolkit().getImage("image/m.png");
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(img, 0, 0, null);
}
};
panel.setBounds(0, 0, 290, 160);
JButton prebutton = new JButton(new ImageIcon("image/pre1.png"));
prebutton.setRolloverIcon(new ImageIcon("image/pre2.png"));
prebutton.setBounds(135, 80, 40, 40);
panel.add(prebutton);
JButton playbutton = new JButton(new ImageIcon("image/play1.png"));
playbutton.setRolloverIcon(new ImageIcon("image/play2.png"));
playbutton.setBounds(165, 80, 40, 40);
panel.add(playbutton);
JButton stopbutton = new JButton(new ImageIcon("image/stop1.png"));
stopbutton.setRolloverIcon(new ImageIcon("image/stop2.png"));
stopbutton.setBounds(195, 80, 40, 40);
panel.add(stopbutton);
JButton nextbutton = new JButton(new ImageIcon("image/next1.png"));
nextbutton.setRolloverIcon(new ImageIcon("image/next2.png"));
nextbutton.setBounds(225, 80, 40, 40);
panel.add(nextbutton);
c.add(panel);
} public static void main(String[] args) {
new Main();
}
}
很久没用swing了,setUI好像是protected的,panel.setUI(new SkinedUI(img));在外部设置ui是错的,额,我发现我的错误还不少,汗
lasfrost