버튼 누를 떄 실행 오류가 떠서 질문드립니다.

조회수 569회
package studyfree;

import java.awt.Button;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

    class Gugudan extends Frame implements WindowListener, ActionListener{

        @Override
        public void actionPerformed(ActionEvent arg0) {
            Object c = arg0.getSource();
            for (int a=0; a<9; a++) {
                if (c == btns[a]) {
                    for(int b=1;b<10;b++) {
                        lb1.setText(btns[a]+"*"+b);  //이부분에서 오류가 뜹니다.
                    }
                }
            }
        }
        @Override
        public void windowActivated(WindowEvent e) {
            // TODO Auto-generated method stub

        }

        @Override
        public void windowClosed(WindowEvent e) {
            // TODO Auto-generated method stub

        }

        @Override
        public void windowClosing(WindowEvent e) {
            // TODO Auto-generated method stub
            System.exit(0);
        }

        @Override
        public void windowDeactivated(WindowEvent e) {
            // TODO Auto-generated method stub

        }

        @Override
        public void windowDeiconified(WindowEvent e) {
            // TODO Auto-generated method stub

        }

        @Override
        public void windowIconified(WindowEvent e) {
            // TODO Auto-generated method stub

        }

        @Override
        public void windowOpened(WindowEvent e) {
            // TODO Auto-generated method stub

        }
        Button [] btns;
        Panel pa1,pa2;
        Label lb1;
        Gugudan(String str){
            super(str);


            pa1 = new Panel();
            pa1.setLayout(new GridLayout(3,3));
            pa1.setSize(500, 250);

            pa2 = new Panel();
            pa2.setSize(500, 250);

            Label lb1 = new Label(" 원하는 단을 선택하세요 ");
            btns = new Button[11];

            for (int a=0;a<9;a++) {
                btns[a] = new Button(a+1+"단"); // 버튼에 숫자로 버튼명 넣기
                btns[a].addActionListener(this); // 각숫자 버튼 동작하기
                pa1.add(btns[a]); // 패널1에 만든 버튼들 추가
            }

            add("South",pa1); // 아래쪽에 패널1 생성 
            add("North",pa2); // 위쪽에 패널2 생성
            pa2.add(lb1);

            this.addWindowListener(this); //window 닫기
            this.setSize(500, 500); // window 사이즈
            this.setVisible(true); // window 보여주기
        }
    }

public class Test1 {

    public static void main(String[] args) {
        Gugudan gu = new Gugudan("구구단출력입니다.");

    }
}

1 답변

  • 오류가 발생하면 오류메세지도 함께 등록해주시고 프로그램 설명도 함께 제공해주세요. 그래야 해당 내용을 보는 입장에서 빨리 파악할 수 있고 도움되는 무엇인가도 더 제공할 수 있겠죠.

    Label lb1 = new Label(" 원하는 단을 선택하세요 ");
    

    상기라인을 하기와 같이 수정하세요.

    lb1 = new Label(" 원하는 단을 선택하세요 ");
    

    그리고 Label 위젯을 잘못이해하고 있는 것 같습니다. 오류는 해결이 되겠지만 아마도 원하는 대로 구구단이 표시되지는 않을 듯 하네요.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)