私は現在、学校向けの小さなプロジェクトに取り組んでいます。私はまだ始まっています。私はちょうどJFrameとそのすべてのものに読んで始めたので、私があなたが私に示すすべてのものにそれほど精通していないかもしれないのだろうかと思ってはいけません。Javaは既に追加されたオブジェクトに変更を加えます
ここでの目標は、画像を出力し、その画像のすべての単一ピクセルを手動で変更できるプログラムを作成することです。まあ、コードはこれまでのところ(xDさんをスポッティング厄介なエラーの多くの時間後に)動作しますが、私は何をしたい
public class Pixel extends Component {
private BufferedImage img;
private int width;
private int height;
private Graphics graphics;
public Pixel(int w, int h) {
width = w;
height = h;
}
public void create() {
img = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
//Set any color for now
for(int wc = 0; wc < width; wc++) {
for(int hc = 0; hc < height; hc++) {
img.setRGB(wc, hc, new Color(0xAAFFBB).getRGB());
}
}
}
@Override
public void paint(Graphics g) {
super.paint(g);
graphics = g;
create();
update();
}
public void update() {
graphics.drawImage(img, 0, 0, null);
}
public void testChange() {
for(int i = 50; i < 80; i++) {
for(int j = 80; j < 120; j++) {
img.setRGB(i, j, new Color(0xFF8876).getRGB());
}
for(int j = 460; j < 493; j++) {
img.setRGB(i, j, new Color(0xFF8876).getRGB());
}
}
}
}
:
public class JavaGraphicsTest {
private static Pixel pixel;
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setVisible(true);
pixel = new Pixel(1600, 900);
frame.getContentPane().add(pixel);
//pixel.testChange();
}
}
と:したがって、私は、次のコードを書いています今は動作していないようです:mainメソッド(現在コメントされています)でメソッド "pixel.testChange()"を呼び出したいと思います。しかし、私がJFrameの仕組みを理解している限り、JFrameに追加したオブジェクトは何もできません。しかし、それは誰のために働くべきですか?アクティブなオブジェクトを削除したり再追加したりすることなく、どのように変更できますか?
PS:testChangeメソッドが想定していることを理解できない場合は、画像の2ブロックを別の色に変更する必要があります。基本的に画像を正常に変更したかどうかを確認するテストです。
プロジェクトに関する詳細な情報が必要な場合は、私に聞いてください:)事前に
おかげで、 ジュリアン
こんにちはJulian、そしてstackoverflowへようこそ! :D私はrevalidate()メソッドを調べることをお勧めします。私は自分自身についてはあまりよく分かりませんが、わかっているように、あなたがしたいことをしなければなりません。 :) –
@EthanMooreありがとう^^これを行うための基本だと思われますが、より多くのエラーが見つかると、私は現在戦っている問題が別のものだということを知りました:私はこの行を呼び出すときに 'img.setRGB (80、80、new Color(0xFF8876).getRGB()) 'paint()メソッドでは動作しますが、testChange()メソッドでは常にNullPointerを取得します:(ただし、なぜそれはこのようなものです... –
'new Color(0xFF8876).getRGB()'を既存の値に変更してみてください(ちょっと別の80?を入れてください)、何が起こるか教えてください。@JulianThurner –