宿題のために、paintComponent
ユーザーが入力した変数を使用してボックスをペイントしようとしています。固定数を使用して、必要なことを構築することができました。私は一日中これに取り組んできましたが、変数を実装する方法を見つけることができませんでした。ここに私が取り組んでいるものの簡略化されたバージョンがあります:
import javax.swing.*;
import java.awt.*;
public class Problem3 extends JFrame{
public static void main(String[] args) {
int xCoord = Integer.parseInt(
JOptionPane.showInputDialog("Enter an X cord."));
JFrame gd = new JFrame();
gd.setLocationRelativeTo(null);
gd.setSize(300, 300);
gd.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gd.setVisible(true);
gd.add(new NewPanel());
}
public int getX(){
return xCoord;
}
}
class NewPanel extends JPanel {
int xCoord = getX();
protected void paintComponent(Graphics g){
super.paintComponent(g);
g.drawRect(10,10,xCoord,50);
}
}
編集
ここに投稿してから、NewPanel クラス内でセッター メソッドを使用してみました
public void setX() {
xCoord = Integer.parseInt(
JOptionPane.showInputDialog("Enter an X cord."));
}
これを実行すると、これまでに見たことのない奇妙なエラーが発生します。StackOverFlow エラーが発生し、ダイアログ ボックスが数回または数百回ポップアップし、ポップアップが止まりません。
EDIT 3 Hovercraft Full Of Eels ソリューションを使用して、動作するようになりました! Full Of Eels の時間、助け、忍耐に感謝します。
public class Problem3 extends JFrame{
public static void main(String[] args) {
JFrame gd = new JFrame();
gd.setLocationRelativeTo(null);
gd.setSize(300, 300);
gd.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gd.setVisible(true);
NewPanel panel = new NewPanel();
panel.setX(50);
gd.add(panel);
}
}
class NewPanel extends JPanel {
int xCoord;
public void setX(int x){
xCoord = x;
}
public int getX(){
return xCoord;
}
protected void paintComponent(Graphics g){
super.paintComponent(g);
g.drawRect(10,10,xCoord,50);
}
}