Итак, вот класс и супер класс, вопрос для подражания:
TestDraw:
package project3;
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class TestDraw extends MyShape
{
public static void main(String[] args)
{
DrawPanel panel = new DrawPanel();
JFrame application = new JFrame();
application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
application.add(panel);
application.setSize(300,300);
application.setVisible(true);
JLabel southLabel = new JLabel(toString());
application.add(southLabel, BorderLayout.SOUTH);
}
}
MyShape:
package project3;
import java.awt.Color;
public class MyShape
{
private int x1, y1, x2, y2;
private Color myColor;
public MyShape()
{
setX1(1);
setY1(1);
setX2(1);
setY2(1);
setMyColor(Color.BLACK);
}
public MyShape(int x1, int y1, int x2, int y2, Color myColor)
{
setX1(x1);
setY1(y1);
setX2(x2);
setY2(y2);
setMyColor(myColor);
}
public void setX1(int x1)
{
if(x1 >= 0 && x1 <= 300)
{
this.x1 = x1;
}
else
{
this.x1 = 0;
}
}
public int getX1()
{
return x1;
}
public void setY1(int y1)
{
if(y1 >= 0 && y1 <= 300)
{
this.y1 = y1;
}
else
{
this.y1 = 0;
}
}
public int getY1()
{
return y1;
}
public void setX2(int x2)
{
if(x2 >= 0 && x2 <= 300)
{
this.x2 = x2;
}
else
{
this.x2 = 0;
}
}
public int getX2()
{
return x2;
}
public void setY2(int y2)
{
if(y2 >= 0 && y2 <= 300)
{
this.y2 = y2;
}
else
{
this.y2 = 0;
}
}
public int getY2()
{
return y2;
}
public void setMyColor(Color myColor)
{
this.myColor = myColor;
}
public Color getMyColor()
{
return myColor;
}
public String toString()
{
return String.format("X1: %d, X2: %d, Y1: %d, Y2: %d, Color: %s", getX1(), getX2(),
getY1(), getY2(), getMyColor());
}
}
В классе TestDraw я пытался поместить toString из MyShape в текстовое поле на окне, но когда я сделал «JLabel southLabel = new JLabel (toString ());» он сказал, что мой toString () должен быть статическим. Это все прекрасно, но когда вы делаете toString статическим, он хочет, чтобы значения в этой строке были статичными, что плохо ... какие-нибудь идеи?
Я пытался поместить toString () в суперкласс, но это дает ту же проблему, пытался задать вопрос учителю, но он говорит: «Посмотрите в книге». Хорошо… прошло два часа чтения главы, и я еще не нашел пример после третьего прочтения.
Заранее спасибо!
PS: Ответ хорош, но объяснение предпочтительнее!