JAVA :: Ch. 10 실습문제

s_omi·2021년 2월 15일
0

JAVA (자바)

목록 보기
28/62
post-thumbnail
post-custom-banner

📒 문제 1

-난이도 하

💬 다음 그림과 같이 "파일", "편집", "보기", "입력" 의 4가지 메뉴를 가진 스윙프로그램을 작성하라. "보기"메뉴에만 "화면확대", "쪽윤곽"의 2개의 메뉴아이템이 있고 그 사이에는 분리선이 있다.

👉 실행 결과


.
.
.
.
.

👉 프로그램코드


📒 문제 2

-난이도 하

💬 그림과 같은 두 개의 라디오버튼 중 Red 버튼이 선택되면 배경을 빨간색으로, Blue 버튼이 선택되면 배경이 파란색으로 변하는 프로그램을 작성하라.

👉 실행 결과


.
.
.
.
.

👉 프로그램코드


📒 문제 3

-난이도 중

💬 다음 그림과 같이 2개의 체크박스와 버튼을 하나 만들어라. "버튼 비활성화"를 선택하면 버튼이 작동하지 못하게 하고, 해제하면 다시 작동하게 하라. "버튼 감추기"를 선택하면 버튼이 보이지 않도록 하고 해제하면 버튼이 보이도록 하라.

👉 실행 결과


.
.
.
.
.

👉 프로그램코드


📒 문제 4 (미완성)

-난이도 중

💬 다음과 같이 '파일'메뉴에 '저장' 메뉴아이템을 만들고 컨텐트팬에는 JTextArea를 하나 생성하여 스크롤되게 부착한다. 텍스트를 입력한 후 '저장' 메뉴아이템을 선택하면 JOptionPane의 입력 다이얼로그를 출력하여 파일명을 입력받고, 입력된 텍스트 파일에 저장하라. 파일은 프로젝트 폴더 밑에 저장된다. 만일 텍스트영역에 아무 입력도 없이 '저장' 메뉴아이템에 선택되면 JOptionPane의 메시지 다이얼로그를 이용하여 경고하라.

👉 실행 결과



.
.
.
.
.

👉 프로그램코드

public class MyFrame extends JFrame {
    JTextArea ta = new JTextArea(7,20);
    MyFrame() {
        setTitle("파일 저장");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        Container contentPane = getContentPane();
        contentPane.add(new JScrollPane(ta));
        createMenu();
        setSize(300, 220);
        setVisible(true);
    }
    void createMenu() {
        JMenuBar mb = new JMenuBar();
        JMenu file = new JMenu("파일");
        JMenuItem save = new JMenuItem("저장");
        file.add(save);
        mb.add(file);
        setJMenuBar(mb);

        save.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if (ta != null) {
                    String fileName = JOptionPane.showInputDialog("저장할 파일명을 입력하세요.");
                    JTextField field = new JTextField();
                    getContentPane().add(field);

                    try {
                        FileWriter fout = new FileWriter(fileName);
                        String t = ta.getText();
                        StringTokenizer st = new StringTokenizer(ta.getText(), "\n");

                        while (st.hasMoreTokens()) {
                            fout.write(st.nextToken());
                            fout.write("\r\n");
                        }
                        fout.close();
                    } catch (IOException e1) { }
                } else {
                    JOptionPane.showMessageDialog(null, "아무것도 입력하지 않았습니다."
                            , "주의", JOptionPane.ERROR_MESSAGE);
                }
            }
        });
    }
    public static void main(String[] args) {
        new MyFrame();
    }
}

※ 텍스트 영역에 아무것도 입력하지 않을 때 경고 메세지가 뜨지 않음.


📒 문제 5

-난이도 중

💬 1개의 텍스트필드와 3개의 라디오버튼을 출력하고, 사용자가 라디오버튼을 선택하면 텍스트필드에 입력된 숫자를 10진수, 8진수, 2진수, 16진수로 보여주는 프로그램을 작성하라.

👉 실행 결과


.
.
.
.
.

👉 프로그램코드


📒 문제 6 (미완성)

-난이도 상

💬 이미지 레이블을 마우스로 드래깅하여 자유롭게 옮기는 프로그램을 작성하라.

👉 실행 결과

.
.
.
.
.

👉 프로그램코드

public class MyFrame extends JFrame {
    Container contentPane = getContentPane();
    ImageIcon icon = new ImageIcon("\"C:\\Users\\신승미\\Pictures\\배경화면\\꽃.jpeg\"");
    JLabel label = new JLabel(icon);
    MyFrame() {
        setTitle("이미지 드래깅");
        setDefaultCloseOperation(EXIT_ON_CLOSE);

        contentPane.setLayout(null);
        MyListener listener = new MyListener();
        label.addMouseListener(listener);
        label.addMouseMotionListener(listener);

        setSize(300,300);
        setVisible(true);
    }
    class MyListener extends MouseAdapter {
        public void mousePressed(MouseEvent e) {
            int x = getX();
            int y = getY();
            label.setLocation(x,y);
            label.setSize(50,50);
            contentPane.add(label);
        }
        public void mouseDragged(MouseEvent e) {
            super.mouseDragged(e);
            int now_x = getX();
            int now_y = getY();
        }
    }
    public static void main (String[] args){
        new MyFrame();
    }
}

📒 문제 7 (미완성)

-난이도 상

💬 10개의 레이블을 순서대로 클릭하는 간단한 게임을 만들어보자. 0에서 9까지 숫자가 있는 레이블을 10개 만들고 이들을 컨텐트팬 내의 임의의 위치에 배치한다. 사용자가 0부터 9까지 순서대로 클릭하여 10개를 모두 클릭하면, 이들을 다시 임의의 위치에 배치한다. 클릭된 숫자는 화면에서 보이지 않게 하고, 번호 순서로 클릭되게 하라.

👉 실행 결과

.
.
.
.
.

👉 프로그램코드

public class MyFrame extends JFrame {
    MyFrame() {
        setTitle("Ten 레이블 클릭");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Container contentPane = getContentPane();
        contentPane.setLayout(null);
        JLabel[] num = new JLabel[10];

        for(int i = 0; i<10; i++) {
            num[i] = (JLabel) Integer.toString(i);
            contentPane.add(num[i]);
            num[i].setLocation((int)(Math.random()*50 +1), (int)(Math.random()*50 +1));
        }

        setSize(300,300);
        setVisible(true);
    }
    public static void main(String[] args) {

    }
}
profile
공부한 거 올려요 :)
post-custom-banner

0개의 댓글