解決方法がわからないという問題がありました。私は今読んでいます(JAVAのプログラミング方法第9版)。私のアプリケーション (第 9 章、390 ページ) は、異なる色の異なる形状を乱数で作成する必要があり、レイアウト (JFrame) には、形状を持つ JPanel と、これらの異なる形状の数を持つ JLabel が含まれます。ランダムな色でランダムな形状を作成しましたが、形状の数が main メソッドに正しく渡されません。それは常に私に0を示します。
RandomShapes.java
import java.awt.Color;
import java.awt.Graphics;
import java.util.Random;
import javax.swing.JPanel;
public class RandomShapes extends JPanel{
public int counter;
private Random random = new Random();
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
drawLines(g);
}
public void drawLines(Graphics g){
for(int i = 0 ; i < random.nextInt(20) ; i++){
g.setColor(generateColor());
g.drawLine(random.nextInt(getWidth()), random.nextInt(getHeight()), random.nextInt(getWidth()), random.nextInt(getHeight()));
counter++;
}
}
private Color generateColor(){
Color color = new Color(random.nextInt(255), random.nextInt(255), random.nextInt(255));
return color;
}
@Override
public String toString(){
return String.format("%d",counter);
}
}
RandomShapesTest.java
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class RandomShapesTest{
public static void main(String[] args){
RandomShapes shapes = new RandomShapes();
JFrame application = new JFrame();
JLabel status = new JLabel(shapes.toString());
application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
application.add(shapes);
application.setSize(600,600);
application.add(status, BorderLayout.NORTH);
application.setVisible(true);
}
}
ところで、完全な答えよりもちょっとしたトリックの方が役に立つかもしれません :)
よろしく、、、