C
Chad
The following code, which is taken from one of my school books,
displays 4 different boxes inside a gui
import java.awt.*;
import javax.swing.*;
public class TestMessagePanel extends JFrame {
public TestMessagePanel() {
MessagePanel messagePanel1 = new MessagePanel("Top Left");
MessagePanel messagePanel2 = new MessagePanel("Top Right");
MessagePanel messagePanel3 = new MessagePanel("Bottom Left");
MessagePanel messagePanel4 = new MessagePanel("Bottom Right");
messagePanel1.setBackground(Color.RED);
messagePanel2.setBackground(Color.CYAN);
messagePanel3.setBackground(Color.GREEN);
messagePanel4.setBackground(Color.WHITE);
messagePanel1.setCentered(true);
setLayout(new GridLayout(2, 2));
add(messagePanel1);
add(messagePanel2);
add(messagePanel3);
add(messagePanel4);
}
public static void main(String[] args) {
TestMessagePanel frame = new TestMessagePanel();
frame.setSize(300, 200);
frame.setTitle("TestMessagePanel");
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}//end main()
}
class MessagePanel extends JPanel {
private String message = "Nope";
private int xCoordinate = 20;
private int yCoordinate = 20;
private int interval = 10;
private boolean centered;
public MessagePanel() {
}
public MessagePanel(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
repaint();
}
public int getXCoordinate() {
return xCoordinate;
}
public void setXCoordinate(int x) {
this.xCoordinate = x;
repaint();
}
public int getYCoordinate() {
return yCoordinate;
}
public void setYCoordinate(int y) {
this.xCoordinate = y;
repaint();
}
public boolean isCentered() {
return centered;
}
public void setCentered(boolean centered) {
this.centered = centered;
repaint();
}
public int getInterval() {
return interval;
}
public void setInterval(int interval) {
this.interval = interval;
repaint();
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (centered) {
FontMetrics fm = g.getFontMetrics();
int stringWidth = fm.stringWidth(message);
int stringAscent = fm.getAscent();
xCoordinate = getWidth() / 2 - stringWidth / 2;
yCoordinate = getWidth() / 2 - stringAscent / 2;
}
g.drawString(message, xCoordinate, yCoordinate);
}
public void MoveLeft() {
xCoordinate -= interval;
repaint();
}
public void MoveRight() {
xCoordinate += interval;
repaint();
}
public void moveUp() {
yCoordinate -= interval;
repaint();
}
public void moveDown() {
yCoordinate += interval;
repaint();
}
public Dimension getPreferredSize() {
return new Dimension(200, 30);
}
}
What I don't get is why the book defines stuff like getXCoordinate(),
getYCoordinate(), and getInterval() when it doesn't even use them in
this very long code example. I tried reading over the section in the
book, but the author gives no explanation on why he included a bunch
of unused getters/setters. On top of that, the code seems to work fine
when I comment out these methods.
Ideas?
Chad
displays 4 different boxes inside a gui
import java.awt.*;
import javax.swing.*;
public class TestMessagePanel extends JFrame {
public TestMessagePanel() {
MessagePanel messagePanel1 = new MessagePanel("Top Left");
MessagePanel messagePanel2 = new MessagePanel("Top Right");
MessagePanel messagePanel3 = new MessagePanel("Bottom Left");
MessagePanel messagePanel4 = new MessagePanel("Bottom Right");
messagePanel1.setBackground(Color.RED);
messagePanel2.setBackground(Color.CYAN);
messagePanel3.setBackground(Color.GREEN);
messagePanel4.setBackground(Color.WHITE);
messagePanel1.setCentered(true);
setLayout(new GridLayout(2, 2));
add(messagePanel1);
add(messagePanel2);
add(messagePanel3);
add(messagePanel4);
}
public static void main(String[] args) {
TestMessagePanel frame = new TestMessagePanel();
frame.setSize(300, 200);
frame.setTitle("TestMessagePanel");
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}//end main()
}
class MessagePanel extends JPanel {
private String message = "Nope";
private int xCoordinate = 20;
private int yCoordinate = 20;
private int interval = 10;
private boolean centered;
public MessagePanel() {
}
public MessagePanel(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
repaint();
}
public int getXCoordinate() {
return xCoordinate;
}
public void setXCoordinate(int x) {
this.xCoordinate = x;
repaint();
}
public int getYCoordinate() {
return yCoordinate;
}
public void setYCoordinate(int y) {
this.xCoordinate = y;
repaint();
}
public boolean isCentered() {
return centered;
}
public void setCentered(boolean centered) {
this.centered = centered;
repaint();
}
public int getInterval() {
return interval;
}
public void setInterval(int interval) {
this.interval = interval;
repaint();
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (centered) {
FontMetrics fm = g.getFontMetrics();
int stringWidth = fm.stringWidth(message);
int stringAscent = fm.getAscent();
xCoordinate = getWidth() / 2 - stringWidth / 2;
yCoordinate = getWidth() / 2 - stringAscent / 2;
}
g.drawString(message, xCoordinate, yCoordinate);
}
public void MoveLeft() {
xCoordinate -= interval;
repaint();
}
public void MoveRight() {
xCoordinate += interval;
repaint();
}
public void moveUp() {
yCoordinate -= interval;
repaint();
}
public void moveDown() {
yCoordinate += interval;
repaint();
}
public Dimension getPreferredSize() {
return new Dimension(200, 30);
}
}
What I don't get is why the book defines stuff like getXCoordinate(),
getYCoordinate(), and getInterval() when it doesn't even use them in
this very long code example. I tried reading over the section in the
book, but the author gives no explanation on why he included a bunch
of unused getters/setters. On top of that, the code seems to work fine
when I comment out these methods.
Ideas?
Chad