11.10 Map
This commit is contained in:
83
src/bangbean/BangBean.java
Normal file
83
src/bangbean/BangBean.java
Normal file
@@ -0,0 +1,83 @@
|
||||
//: bangbean/BangBean.java
|
||||
// A graphical Bean.
|
||||
package bangbean;
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
import java.io.*;
|
||||
import java.util.*;
|
||||
|
||||
public class
|
||||
BangBean extends JPanel implements Serializable {
|
||||
private int xm, ym;
|
||||
private int cSize = 20; // Circle size
|
||||
private String text = "Bang!";
|
||||
private int fontSize = 48;
|
||||
private Color tColor = Color.RED;
|
||||
private ActionListener actionListener;
|
||||
public BangBean() {
|
||||
addMouseListener(new ML());
|
||||
addMouseMotionListener(new MML());
|
||||
}
|
||||
public int getCircleSize() { return cSize; }
|
||||
public void setCircleSize(int newSize) {
|
||||
cSize = newSize;
|
||||
}
|
||||
public String getBangText() { return text; }
|
||||
public void setBangText(String newText) {
|
||||
text = newText;
|
||||
}
|
||||
public int getFontSize() { return fontSize; }
|
||||
public void setFontSize(int newSize) {
|
||||
fontSize = newSize;
|
||||
}
|
||||
public Color getTextColor() { return tColor; }
|
||||
public void setTextColor(Color newColor) {
|
||||
tColor = newColor;
|
||||
}
|
||||
public void paintComponent(Graphics g) {
|
||||
super.paintComponent(g);
|
||||
g.setColor(Color.BLACK);
|
||||
g.drawOval(xm - cSize/2, ym - cSize/2, cSize, cSize);
|
||||
}
|
||||
// This is a unicast listener, which is
|
||||
// the simplest form of listener management:
|
||||
public void addActionListener(ActionListener l)
|
||||
throws TooManyListenersException {
|
||||
if(actionListener != null) {
|
||||
throw new TooManyListenersException();
|
||||
}
|
||||
actionListener = l;
|
||||
}
|
||||
public void removeActionListener(ActionListener l) {
|
||||
actionListener = null;
|
||||
}
|
||||
class ML extends MouseAdapter {
|
||||
public void mousePressed(MouseEvent e) {
|
||||
Graphics g = getGraphics();
|
||||
g.setColor(tColor);
|
||||
g.setFont(
|
||||
new Font("TimesRoman", Font.BOLD, fontSize));
|
||||
int width = g.getFontMetrics().stringWidth(text);
|
||||
g.drawString(text, (getSize().width - width) /2,
|
||||
getSize().height/2);
|
||||
g.dispose();
|
||||
// Call the listener's method:
|
||||
if(actionListener != null) {
|
||||
actionListener.actionPerformed(
|
||||
new ActionEvent(BangBean.this,
|
||||
ActionEvent.ACTION_PERFORMED, null));
|
||||
}
|
||||
}
|
||||
}
|
||||
class MML extends MouseMotionAdapter {
|
||||
public void mouseMoved(MouseEvent e) {
|
||||
xm = e.getX();
|
||||
ym = e.getY();
|
||||
repaint();
|
||||
}
|
||||
}
|
||||
public Dimension getPreferredSize() {
|
||||
return new Dimension(200, 200);
|
||||
}
|
||||
} ///:~
|
||||
Reference in New Issue
Block a user