象棋游戏的棋子是按钮吗? 我想做一个象棋游戏,算法已经写好了,现在想知道象棋的棋子是用什么做的(可能表述有些问题),比如按钮? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 自己定义一个ImageButton继承Button,定义一个Sring类型的model,就是点击状态,鼠标移入状态等,重写里面的pain(),根据model来画不同的图,监听类也直接写在ImageButton类里,调用setModel()设置model。 import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JLabel;public class ImageButton extends JButton implements MouseListener { /** * */ private String name; private JLabel image; private JLabel textPanel; private Boolean pressed = false; private Boolean entered = false; private Boolean enabled = true; private String modal = ""; //只有图片的按钮 public ImageButton(String name) { this.name = name; this.image = new JLabel(); textPanel = new JLabel(); add(image); setLayout(null); setBorder(null); setOpaque(false); addMouseListener(this); } //图文混合按钮 public ImageButton(String btnname, String text) { this(btnname); textPanel.setText(text); textPanel.setVerticalAlignment(JLabel.CENTER); textPanel.setHorizontalAlignment(JLabel.CENTER); textPanel.setForeground(Color.LIGHT_GRAY); textPanel.setFont(ConfigDao.instance().getConfig().getFont()); add(textPanel); } //图文混合按钮,并设置字体大小 public ImageButton(String btnname, String text, int size) { this(btnname, text); textPanel.setFont(new Font(ConfigDao.instance().getConfig().getFont() .getFontName(), Font.PLAIN, size)); } //各种鼠标事件处理函数 public void mouseClicked(MouseEvent e) { } public void mouseEntered(MouseEvent e) { if (!enabled) return; entered = true; if (pressed) { setModal("pressed"); } else { setModal("entered"); } } public void mouseExited(MouseEvent e) { if (!enabled) return; entered = false; setModal(""); } public void mousePressed(MouseEvent e) { if (!enabled) return; pressed = true; setModal("pressed"); } public void mouseReleased(MouseEvent e) { if (!enabled) return; pressed = false; if (entered) { setModal("entered"); } else { setModal(""); } } //判断并设置模态,鼠标在图标上为entered public void setModal() { if (entered) { setModal("entered"); } else { setModal(""); } } public void setModal(String modal) { this.modal = modal; repaint(); } public void setIBEnabled(Boolean isenabled) { enabled = isenabled; if (enabled) { setModal(); } else { setModal(""); } } public void setText(String text) { this.textPanel.setText(text); } //重写 @Override public void setForeground(Color fg) { super.setForeground(fg); if (textPanel != null) textPanel.setForeground(fg); } @Override public void setSize(int width, int height) { super.setSize(width, height); image.setSize(width, height); textPanel.setSize(width, height); } @Override public void setFont(Font font) { super.setFont(font); if (textPanel != null) { textPanel.setFont(font); textPanel.setSize(textPanel.getPreferredSize().width, textPanel.getHeight()); } } @Override public void paint(Graphics g) { try { ImageIcon img = null; if ("".equals(modal)) { img = new ImageIcon(this.getClass().getResource( "/images/" + name + ".png")); } else { img = new ImageIcon(this.getClass().getResource( "/images/" + name + "_" + modal + ".png")); } if (img.getImage() != null) g.drawImage(img.getImage(), (getWidth() - img.getIconWidth()) / 2, (getHeight() - img.getIconHeight()) / 2, image); } catch (NullPointerException e) { // super.paint(g); } if (textPanel != null) { g.setColor(Color.BLACK); g.setFont(textPanel.getFont()); g.drawString(textPanel.getText(), (int) (getWidth() - textPanel .getPreferredSize().getWidth()) / 2 + 1, getHeight() / 2 + 7); textPanel.paint(g); } }} 厉害,原来那些棋子实际上就是JButton派生类对象 Transactions not supported 求高手指点!! 二进制文件处理的问题 [新人]jsp:mysql+tomcat5连接出错了, 请教月薪问题 求XML的书 满分送 电子商务网站技术讨论及招聘 Struts中的事件 这个部署过程(jb7+wb7)为什么错?分可以再加 请各位大师......指教小生..哪里有JavaMail中类的源代码下载? 关于hibernate多对多双向映射的一些问题 请教信用卡支付平台的对接程序(java)的思路
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
public class ImageButton extends JButton implements MouseListener { /**
*
*/
private String name;
private JLabel image;
private JLabel textPanel;
private Boolean pressed = false;
private Boolean entered = false;
private Boolean enabled = true;
private String modal = "";
//只有图片的按钮
public ImageButton(String name) {
this.name = name;
this.image = new JLabel();
textPanel = new JLabel();
add(image);
setLayout(null);
setBorder(null);
setOpaque(false);
addMouseListener(this);
}
//图文混合按钮
public ImageButton(String btnname, String text) {
this(btnname);
textPanel.setText(text);
textPanel.setVerticalAlignment(JLabel.CENTER);
textPanel.setHorizontalAlignment(JLabel.CENTER);
textPanel.setForeground(Color.LIGHT_GRAY);
textPanel.setFont(ConfigDao.instance().getConfig().getFont());
add(textPanel);
}
//图文混合按钮,并设置字体大小
public ImageButton(String btnname, String text, int size) {
this(btnname, text);
textPanel.setFont(new Font(ConfigDao.instance().getConfig().getFont()
.getFontName(), Font.PLAIN, size));
}
//各种鼠标事件处理函数
public void mouseClicked(MouseEvent e) {
} public void mouseEntered(MouseEvent e) {
if (!enabled)
return;
entered = true;
if (pressed) {
setModal("pressed");
} else {
setModal("entered");
}
} public void mouseExited(MouseEvent e) {
if (!enabled)
return;
entered = false;
setModal("");
} public void mousePressed(MouseEvent e) {
if (!enabled)
return;
pressed = true;
setModal("pressed");
} public void mouseReleased(MouseEvent e) {
if (!enabled)
return;
pressed = false;
if (entered) {
setModal("entered");
} else {
setModal("");
}
}
//判断并设置模态,鼠标在图标上为entered
public void setModal() {
if (entered) {
setModal("entered");
} else {
setModal("");
}
} public void setModal(String modal) {
this.modal = modal;
repaint();
} public void setIBEnabled(Boolean isenabled) {
enabled = isenabled;
if (enabled) {
setModal();
} else {
setModal("");
}
} public void setText(String text) {
this.textPanel.setText(text);
}
//重写
@Override
public void setForeground(Color fg) {
super.setForeground(fg);
if (textPanel != null)
textPanel.setForeground(fg);
} @Override
public void setSize(int width, int height) {
super.setSize(width, height);
image.setSize(width, height);
textPanel.setSize(width, height);
} @Override
public void setFont(Font font) {
super.setFont(font);
if (textPanel != null) {
textPanel.setFont(font);
textPanel.setSize(textPanel.getPreferredSize().width,
textPanel.getHeight());
}
} @Override
public void paint(Graphics g) {
try {
ImageIcon img = null;
if ("".equals(modal)) {
img = new ImageIcon(this.getClass().getResource(
"/images/" + name + ".png"));
} else {
img = new ImageIcon(this.getClass().getResource(
"/images/" + name + "_" + modal + ".png"));
}
if (img.getImage() != null)
g.drawImage(img.getImage(),
(getWidth() - img.getIconWidth()) / 2,
(getHeight() - img.getIconHeight()) / 2, image);
} catch (NullPointerException e) {
// super.paint(g);
}
if (textPanel != null) {
g.setColor(Color.BLACK);
g.setFont(textPanel.getFont());
g.drawString(textPanel.getText(), (int) (getWidth() - textPanel
.getPreferredSize().getWidth()) / 2 + 1,
getHeight() / 2 + 7);
textPanel.paint(g);
}
}
}