修改一些java小程序代码

修改一些java小程序代码,java,graphics,Java,Graphics,我有下面的小程序代码,我想修改它,使每行的第一个和最后一个点都是红色的。我真的很难开始做这件事 import java.applet.*; import java.awt.*; import java.awt.event.*; public class ChineseCheckerboardApplet extends Applet { public void init() { add(new ChineseCheckerboard(this)); } } c

我有下面的小程序代码,我想修改它,使每行的第一个和最后一个点都是红色的。我真的很难开始做这件事

import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class ChineseCheckerboardApplet extends Applet {
    public void init() {
        add(new ChineseCheckerboard(this));
    }
}

class ChineseCheckerboard extends Canvas {
    public ChineseCheckerboard(Applet parentApplet) {
        setSize(400, 400);
    }


    public void paint(Graphics g) {
        for (int i = 0; i < holesInRow.length; i++)
            drawRow(g, i);
    }


    void drawRow(Graphics g, int row) {
    int centerX = getWidth() / 2;           // figure out center of display
    int startY = 0;
    int numHoles = holesInRow[row];
    int rowWidth = numHoles * holeDiam + (numHoles-1) * holeGap;    //row width is        number of holes + appropriate number of spacings
    int startX = centerX - rowWidth / 2;            // Starting horizontal position is centerX less half the row width
    int y = startY + row * (holeDiam + holeGap);    // Vertically position based upon which row you're displaying
    g.setColor(Color.BLACK);
    for (int i = 0; i < numHoles; i++) {            // Draw each hole
        g.fillOval(startX + i * (holeDiam + holeGap), y, holeDiam, holeDiam);
        g.drawOval(startX + i * (holeDiam + holeGap), y, holeDiam, holeDiam);
    }
}

final int holeDiam = 15;
final int holeGap = (int)(holeDiam * 0.25);

// Here's the array containing the number of holes per row

int [] holesInRow = {1, 2, 3, 4, 13, 12, 11, 10, 9, 10, 11, 12, 13, 4, 3, 2, 1};
import java.applet.*;
导入java.awt.*;
导入java.awt.event.*;
公共类ChineseCheckerboardApplet扩展Applet{
公共void init(){
增加(新的中国棋盘(本));
}
}
类ChineseCheckerboard扩展画布{
公共中文检查板(小程序parentApplet){
设置大小(400400);
}
公共空间涂料(图g){
对于(int i=0;i

}你是说像

只需要一个简单的
if
语句来更改行上点的每次迭代的点的条件

for (int i = 0; i < numHoles; i++) {            // Draw each hole
    if (i == 0 || i == numHoles - 1) {
        g.setColor(Color.RED);
    } else {
        g.setColor(Color.BLACK);
    }
    g.fillOval(startX + i * (holeDiam + holeGap), y, holeDiam, holeDiam);
    g.drawOval(startX + i * (holeDiam + holeGap), y, holeDiam, holeDiam);
}
for(int i=0;i
不要在小程序上调用
setSize
,小程序的大小由加载它的html代码定义,而不是小程序代码。此外,小程序正在使用布局管理器,因此它不会对
ChineseCheckerboard
产生任何影响。你为什么要使用AWT库?这是一个非常糟糕的问题的好答案。@AnubianNoob哦,来吧。这不是个坏问题。尽管原因很接近,但OP清楚地表达了她所需要的,并展示了她能够实现的目标。但是,这确实是一个很好的答案。另外,这张图很好,特别是因为它说明了最终结果与“使所有边界点变红”(这本来是一个更有趣的问题)并不完全相同。。。不过表达得不是很好。@DavidWallace我认为核心问题在于它读起来有点像“我发现了这段代码并想修改它”,而不是我“写了这段代码,现在想修改它”-但那只是我…@DavidWallace没有投反对票,也没有投票赞成结束;),但我认为人们已经厌倦了海报的缺乏努力,我只是说,而不是争论;)