다각형과 두 개의 버튼을 표시하는 창이있는 프로그램을 만들려고합니다. 다각형은 3 점 (삼각형)에서 시작하여 "+"및 "-"버튼을 눌러 다각형의면을 더하거나 뺄 수 있습니다. "스레드에서 예외 : TestPolygonBox에서자바 다각형 크기 조정
: 내가이 프로그램을 실행하려고하면
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class PolygonBox extends JPanel {
private JButton jbtEnlarge = new JButton("+");
private JButton jbtShrink = new JButton("-");
private PolygonPanel polygonPanel = new PolygonPanel();
public PolygonBox(){
JPanel panel = new JPanel();
panel.add(jbtEnlarge);
panel.add(jbtShrink);
setLayout(new BorderLayout());
this.add(polygonPanel,BorderLayout.CENTER);
this.add(panel, BorderLayout.SOUTH);
jbtEnlarge.addActionListener(new EnlargeListener());
jbtShrink.addActionListener(new ShrinkListener());
}
class EnlargeListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e){
polygonPanel.enlarge();
}
}
class ShrinkListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e){
polygonPanel.shrink();
}
}
}
class PolygonPanel extends JPanel{
private int polygonSides = 3;
/** Add side to the polygon*/
public void enlarge(){
polygonSides++;
repaint();
}
public void shrink(){
polygonSides--;
repaint();
}
@Override /** Draw requested Shape*/
protected void paintComponent(Graphics g){
int frameWidth = getWidth()/2;
int frameHeight = getHeight()/2;
int radius = (int)(Math.min(getWidth(),getHeight())* 0.4);
int xCenter = getWidth()/2;
int yCenter = getHeight()/2;
g.setColor(Color.BLUE);
Polygon polygon = new Polygon();
polygon.addPoint(xCenter + radius, yCenter);
polygon.addPoint((int)(xCenter + radius * Math.cos(2 * Math.PI/polygonSides)),
(int)(yCenter - radius * Math.sin(2 * Math.PI/polygonSides)));
for (int polygonPoint = 2; polygonPoint <= polygonSides; polygonPoint++){
polygon.addPoint((int)(xCenter + radius * Math.cos(polygonPoint * 2 * Math.PI/polygonSides)),
(int)(yCenter - radius * Math.sin(polygonPoint * 2 * Math.PI/polygonSides)));
}
g.fillPolygon(polygon);
}
}
내가 오류를 얻을 :
package testpolygonbox
import javax.swing.*;
import java.awt.*;
public class TestPolygonBox extends JFrame {
public TestPolygonBox(){
setLayout(new BorderLayout(5,5));
add(new PolygonBox());
}
public static void main(String[] args) {
TestPolygonBox frame = new TestPolygonBox();
frame.setTitle("Polygon Box");
frame.setSize(400,420);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
옆에있는 컨트롤 클래스가 여기 내 코드입니다 main "java.lang.IllegalArgumentException : 컨테이너에 윈도우 추가하기 at java.awt.Container.checkNotAWindow (Container.java:483) at java.awt.Container.addImpl (Container.java:1084)addAmpl (JFrame.java:562) (JFrame.java:562) at java.awt.Container.add (Container.java:410) at의 java.awt.Container.add (Container.java:998)에서의3210 . testpolygonbox.TestPolygonBox (TestPolygonBox.java:21) testpolygonbox.TestPolygonBox.main (TestPolygonBox.java:24) 자바 결과에서 1
내가 컨테이너에 창을하시기 바랍니다 추가하고 어디 사람이 말해 줄 수 있다면? 임 무슨 잘못하고 있는지 모르겠다.
어이가 너무 빨리 적어도, 삭제하고 질문을 다시 게시하지 않습니다. – DSquare