0
ActionListener 클래스의 actionPerformed() 메서드 내에서 Shape 객체를 그려 InternalFrame에 추가하려고합니다.ActionListener 클래스의 actionPerformed() 메서드에서 프레임에 객체를 그리는 방법
public class InternalFrame extends JInternalFrame{
public JSlider redSlider, greenSlider, blueSlider;
public TextField redField = new TextField();
public TextField greenField = new TextField();
public TextField blueField = new TextField();
Checkbox checkBox = new Checkbox("Filled", true);
String[] shapeNames = {"Oval", "Rectangle", "Line", "NewShape"};
public InternalFrame(String string, boolean b,
boolean c, boolean d, boolean e) {
super(string,b,c,d);
this.setLayout(new BorderLayout());
redSlider = new JSlider(SwingConstants.HORIZONTAL, 0, 256, 32);
greenSlider = new JSlider(SwingConstants.HORIZONTAL, 0, 256, 32);
blueSlider = new JSlider(SwingConstants.HORIZONTAL, 0, 256, 32);
redField.setText(" " + redSlider.getValue());
greenField.setText(" " + greenSlider.getValue());
blueField.setText(" " + blueSlider.getValue());
redSlider.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
// TODO Auto-generated method stub
redField.setText(" " + redSlider.getValue());
//System.out.println("red value: " + redSlider.getValue());
}
});
greenSlider.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
// TODO Auto-generated method stub
greenField.setText(" " + greenSlider.getValue());
}
});
blueSlider.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
// TODO Auto-generated method stub
blueField.setText(" " + blueSlider.getValue());
}
});
JPanel topPanel = new JPanel();
topPanel.setLayout(new GridLayout(1, 4, 6, 0));
JComboBox shapesDropDown = new JComboBox(shapeNames);
shapesDropDown.setSelectedIndex(0);
shapesDropDown.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0) {
//if(arg0.getSource() == shapeNames[1]){
MyShape myShape = new MyRectangle();
add(myShape, BorderLayout.CENTER);
System.out.println("HHHH");
//}
}
});
JPanel empty1 = new JPanel();
JPanel empty2 = new JPanel();
topPanel.add(empty1);
topPanel.add(shapesDropDown);
topPanel.add(checkBox);
topPanel.add(empty2);
JPanel sliderPanel = new JPanel();
sliderPanel.setLayout(new GridLayout(3, 3));
sliderPanel.add(new Label("Red:"));
sliderPanel.add(redSlider);
sliderPanel.add(redField);
sliderPanel.add(new Label("Green:"));
sliderPanel.add(greenSlider);
sliderPanel.add(greenField);
sliderPanel.add(new Label("Blue:"));
sliderPanel.add(blueSlider);
sliderPanel.add(blueField);
add(topPanel, BorderLayout.NORTH);
add(sliderPanel, BorderLayout.SOUTH);
}
}
도형 개체도 생성되지만 InternalFrame에는 표시되지 않습니다.
어떻게 인스턴스화되지 않았다는 것을 알고 계십니까? – svz
어떻게 생성되지 않았는지 어떻게 알 수 있습니까? 즉, 생성자가 실패 할 수있는 유일한 방법은 예외를 throw하는 것이지만 아직 언급하지 않았습니다. – Wormbo
죄송합니다. 개체가 인스턴스화되고 있지만 사각형이 프레임에 추가되지 않습니다. – Ravindra