矩形/椭圆程序
问题描述:
我在使用矩形和椭圆的这个程序时遇到了麻烦。矩形/椭圆程序
有4个可供选择的按钮,矩形/椭圆/边/标签,其中标签具有文本字段 您可以选择矩形/椭圆进行绘制,然后单击框架中的某处,然后将其绘制到那里。边缘通过拖动鼠标完成。
我不明白的是如何做到既矩形和椭圆,并给定为一个超类“RectangleNode”等在这里,样品抽象类的抽象类GraphElement代码:
import java.awt.Graphics2D;
abstract public class GraphElement
{
private double xPos;
private double yPos;
protected String label;
public GraphElement()
{
xPos = 0;
yPos = 0;
}
public GraphElement(double x, double y)
{
xPos = x;
yPos = y;
}
public final double getXPos()
{
return xPos;
}
public final double getYPos()
{
return yPos;
}
public void moveTo (double xLoc, double yLoc)
{
xPos = xLoc;
yPos = yLoc;
}
public String toString()
{
String str = "(X,Y) Position: (" + xPos + "," + yPos + ")\n";
return str;
}
abstract void draw(Graphics2D g2);
abstract boolean isSelected(double x, double y);
boolean applyLabel()
{
return true;
}
public String getLabel()
{
return label;
}
public void setLabel(String label)
{
this.label = label;
}
}
任何帮助将不胜感激,因为我完全失去了。
GraphDrawViewer:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.BorderLayout;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class GraphDrawViewer
{
public static void main(String[] args)
{
JFrame frame = new JFrame();
final int FRAME_WIDTH = 1000;
final int FRAME_HEIGHT = 1000;
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
frame.setTitle("Graph Draw");
frame.setLayout(new BorderLayout());
//Panel
JPanel panel = new JPanel();
frame.add(panel, BorderLayout.NORTH);
//Buttons
JButton rectangleButton = new JButton("Rectangle");
JButton ellipseButton = new JButton("Ellipse");
JButton edgeButton = new JButton("Edge");
JButton labelButton = new JButton("Label");
//Text Field
final int FIELD_WIDTH = 10;
final JTextField labelField = new JTextField(FIELD_WIDTH);
//Add all buttons
panel.add(rectangleButton);
panel.add(ellipseButton);
panel.add(edgeButton);
panel.add(labelButton);
panel.add(labelField);
frame.setVisible(true);
}
}
答
从我了解你的问题,看来你不确定如何创建有两个子类里面做事情,似乎“天生”不同的类。在Graphics
类。如果你去Java
文档看一看,看,特别是在drawOval
,drawRectangle
,fillOval
,并且fillRectangle
方法,你会看到,在方法的名称椭圆实际创建一个省略号是拟合在给定的矩形大小。我认为这足以让你开始编写程序。
是的,不允许吗?如果是的话,我会删除它或什么 – JA3N 2012-02-23 03:15:11
家庭作业很好。下次将它标记为家庭作业。 – 2012-02-23 03:51:16
你能发布矩形和椭圆和矩形节点的代码吗? – 2012-02-23 03:52:25