摘要被子广场

时间:2014-05-30 02:45:09

标签: java

我正在创建一个抽象的被子方块。这将有一个AbstractQuiltSection或AbstractGraphicalQuiltSection的子类,我的类将扩展其中一个类。

由于我正在创建基于文本的quilt部分,因此我扩展了AbstractQuiltSection类。

AbstractQuiltSection中有九种抽象方法:

**public abstract string line1...line9 (int width)**

这些方法中的每一个都将返回一个字符串。字符串的长度应为width参数。即如果width为12,则返回的字符串应该是12个字符长。 line1方法返回quilt部分的第一行,line2方法返回第二行等

这是我感到困惑的地方:

每个基于文本的被子部分将高达9个字符(即,将占用9行),但其宽度可能会有所不同。绘制被子时,你的line1,line2,line3等等。将调用方法来确定要输出的字符。

宽度为12的样品被子部分(包含莎士比亚的引用)可能是:

............

.To.........

......Thine.

...own......

.....self...

..be........

.....true...

............

Shakespeare.

我必须创建一个AbstractQuiltSection的子类,专门研究9种方法。 此外,您可以专门使用textColor和backgroundColor方法来指定基于文本的面组部分的颜色。

有人可以检查我是否做得对吗?

QuiltSquare

public class TomHakQuiltSquare extends AbstractQuiltSection {
    public static void main (String[]args){     

        AbstractQuiltSection square1 = new AbstractQuiltSection(); //Cannot instantiate the type AbstractQuiltSection
        square1.line1(12);
    }

    @Override
    public String line1(int width) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public String line2(int width) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public String line3(int width) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public String line4(int width) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public String line5(int width) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public String line6(int width) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public String line7(int width) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public String line8(int width) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public String line9(int width) {
        // TODO Auto-generated method stub
        return null;
    }
}

AbstractQuiltSection

import java.awt.*;
public abstract class AbstractQuiltSection extends AbstractGraphicalQuiltSection {
    public abstract String line1(int width);
    public abstract String line2(int width);
    public abstract String line3(int width);
    public abstract String line4(int width);
    public abstract String line5(int width);
    public abstract String line6(int width);
    public abstract String line7(int width);
    public abstract String line8(int width);
    public abstract String line9(int width);

    public Color textColor(){
        return Color.black;
    }
    public Color backgroundColor(){
        return Color.white;
    }

    public void drawQuiltSection(Graphics g, int width, int height) {
        Font f;
        final int borderPix = 3;
        double fontHeight = (double) (height - borderPix*2)/9.0;
        f = new Font("Courier", Font.PLAIN, (int)fontHeight);

        g.setColor(backgroundColor());
        g.fillRect(0, 0, width+5, height+5);

        g.setColor(textColor());
        g.setFont(f);

        FontMetrics FM = g.getFontMetrics();
        int characters = (int) ((width - 2*borderPix)/FM.charWidth('0'));

        g.drawString(line1(characters), borderPix, height - borderPix - 8 * (int) FM.getAscent());
        g.drawString(line2(characters), borderPix, height - borderPix - 7 * (int) FM.getAscent());
        g.drawString(line3(characters), borderPix, height - borderPix - 6 * (int) FM.getAscent());
        g.drawString(line4(characters), borderPix, height - borderPix - 5 * (int) FM.getAscent());
        g.drawString(line5(characters), borderPix, height - borderPix - 4 * (int) FM.getAscent());
        g.drawString(line6(characters), borderPix, height - borderPix - 3 * (int) FM.getAscent());
        g.drawString(line7(characters), borderPix, height - borderPix - 2 * (int) FM.getAscent());
        g.drawString(line8(characters), borderPix, height - borderPix - 1 * (int) FM.getAscent());
        g.drawString(line9(characters), borderPix, height - borderPix);
    }
}

0 个答案:

没有答案