矩形/椭圆程序

问题描述:

我在使用矩形和椭圆的这个程序时遇到了麻烦。矩形/椭圆程序

有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); 
    } 
}  
+0

是的,不允许吗?如果是的话,我会删除它或什么 – JA3N 2012-02-23 03:15:11

+0

家庭作业很好。下次将它标记为家庭作业。 – 2012-02-23 03:51:16

+0

你能发布矩形和椭圆和矩形节点的代码吗? – 2012-02-23 03:52:25

从我了解你的问题,看来你不确定如何创建有两个子类里面做事情,似乎“天生”不同的类。在Graphics类。如果你去Java文档看一看,看,特别是在drawOvaldrawRectanglefillOval,并且fillRectangle方法,你会看到,在方法的名称椭圆实际创建一个省略号是拟合在给定的矩形大小。我认为这足以让你开始编写程序。