본문 바로가기
IT/프로그래밍

명품 JAVA Programming 연습문제 11장

by nutrient 2020. 11. 29.
728x90
728x170

명품 JAVA Programming 연습문제 11장

 

 

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

[스윙 컴포넌트를 활성화/비활성화시키는 JComponet 메소드는 setEnabled(boolean)이며, 스우이컴포넌트의 보이기/감추기를 제어하는 JComponent 메소드는 setVisible(boolean)이다. ITemListener를 이용하라]

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;



class Frame1 extends JFrame

{

        JPanel p = new JPanel();

        JCheckBox Boff = new JCheckBox("버튼 비활성화");

        JCheckBox Bhide = new JCheckBox("버튼 감추기");

        JButton btn = new JButton ("test button");



        Frame1()

        {

                this.setTitle("CheckBox Practice..");

                this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                Boff.addItemListener(new MyItemListener());

                Bhide.addItemListener(new MyItemListener());

                p.add(Bhide);

                p.add(Boff);

                p.add(btn);

                this.add(p);

                this.setVisible(true);

                this.setSize(300, 300);

        }



        class MyItemListener implements ItemListener

        {

                public void itemStateChanged(ItemEvent e)

                {

                        if(e.getStateChange() == ItemEvent.SELECTED)

                        {

                                if(e.getSource() == Boff)

                                {

                                        btn.setEnabled(false);

                                }

                                else

                                {

                                        btn.setVisible(false);

                                }

                        }

                        else

                        {

                                if(e.getSource() == Boff)

                                {

                                        btn.setEnabled(true);

                                }

                                else

                                {

                                        btn.setVisible(true);

                                }

                        }

                }



        }

}





public class m1

{



        public static void main(String[] args)

        {

                new Frame1();

        }



}

 

 

 

삶의 동기가 부족하다면 배달알바 해봐라

인터넷에서 유명한 글인 삶의 동기가 부족하다면 배달알바 해봐라에 대해 알아보도록 하겠습니다. 이 글을 처음부터 끝까지 읽어주시면 삶의 동기가 부족하다면 배달알바 해봐라에 대해 아는

tistorysolution.tistory.com

 


2. JComboBox를 이용하여 빈 콤보박스를 만들고 JTextField컴포넌트의 입력 창에 문자열을 입력한후 <Enter> 키를 입력하여 이 문자열을 콤보박스의 아이템으로 삽입하라.

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;



class Frame2 extends JFrame

{

        JPanel p = new JPanel();

        JComboBox CB = new JComboBox();

        JTextField TF = new JTextField(10);



        Frame2()

        {

                this.setTitle("Test");

                this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                TF.addKeyListener(new MyKeyListener());

                p.add(TF);

                p.add(CB);

                this.add(p);

                this.setSize(300, 300);

                this.setVisible(true);

                TF.requestFocus();

        }



        class MyKeyListener implements KeyListener

        {



                public void keyPressed(KeyEvent e)

                {

                        if(e.getKeyCode() == KeyEvent.VK_ENTER)

                        {

                                CB.addItem(TF.getText())

                                TF.setText("");

                        }

                }



                public void keyReleased(KeyEvent e){}

                public void keyTyped(KeyEvent e) {}



        }

}





public class m2

{



        public static void main(String[] args)

        {

                new Frame2();

        }



}
 

스포츠카를 못타는 인생은 진짜 불쌍한 인생이다

인터넷에서 유명한 글인 스포츠카를 못타는 인생은 진짜 불쌍한 인생이다에 대해 알아보도록 하겠습니다. 이 글을 처음부터 끝까지 읽다 보면 스포츠카를 못타는 인생은 진짜 불쌍한 인생이다

tistorysolution.tistory.com

 

 

 

3.다음과 같은 화면을 구성하고 버튼을 클릭하면 정수로 된 돈의 액수를 입력받아 오만원권, 만원권, 천원권, 500원짜리동전, 100원짜리동전,50원짜리동전,10원짜리 동전,1원짜리 동전이 각각 몇 개로 변환되는지 출력하라. 예를 들어 65370이 입력되면 오만원1매,만원1매, 천원5매, 100원 3개, 50원1개,10원2개가 출력된다.

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;





class Frame3 extends JFrame

{



        JPanel p_north = new JPanel();

        JPanel p_center = new JPanel();

        JLabel la1 = new JLabel("금액");

        JTextField TX1 = new JTextField(10);

        JButton btn = new JButton("계산");

        JLabel[] la = new JLabel[8];

        JTextField[] TF = new JTextField[8];

        String[] str = {"오만원","만원","천원","500원","100원","50원","10원","1원"};

        int[] Don = {50000, 10000, 1000, 500, 100, 50, 10, 1};



        Frame3()

        {

                this.setTitle("Test");

                this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                this.setLayout(new BorderLayout());

                p_north.add(la1);

                p_north.add(TX1);

                p_north.add(btn);

                btn.addMouseListener(new MyMouseListener());



                p_center.setLayout(new GridLayout(8,2));

                for(int i =0; i <str.length i++)

                {

                        la[i] = new JLabel(str[i]);

                        TF[i] = new JTextField(5);

                        p_center.add(la[i]);

                        p_center.add(TF[i]);

                }



                p_north.setBackground(Color.PINK);

                p_center.setBackground(Color.PINK);

                this.add(p_north,BorderLayout.NORTH);

                this.add(p_center,BorderLayout.CENTER);

                this.setSize(300, 300);

                this.setVisible(true);



        }

        

        class MyMouseListener  extends MouseAdapter

        {



                public void mouseClicked(MouseEvent e)

                {

                        int Money = Integer.parseInt(TX1.getText());

                        int m =0;

                        if(e.getSource() == btn)

                        {

                                for(int i =0; i<Don.lengthi++)

                                {

                                        m = Money/Don[i];

                                        TF[i].setText(Integer.toString(m));

                                        if(m > 0)

                                        {

                                                Money = Money % Don[i];

                                        }

                                }

                        }

                }

        }

}

public class m3

{



        public static void main(String[] args)

        {

                new Frame3();

        }



}


4.다음과 같이 실습문제 3번에 체크박스가 추가적으로 달려 있는 화면을 구성하라. 사용자는 체크박스를 마음대로 선택/해제할 수 있으며, 선택된 체크박스에 해당하는 액수의 돈에 대해서만 변환에 참여시킨다. 1원짜리 동전은 체크박스가 주어지지 않으며 항상 참여시킨다.

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

class Frame3 extends JFrame {
 JPanel p_north = new JPanel();
 JPanel p_center = new JPanel();
 JLabel la1 = new JLabel("금액");
 JTextField TX1 = new JTextField(10);
 JButton btn = new JButton("계산");
 JLabel[] la = new JLabel[8];
 JTextField[] TF = new JTextField[8];
 String[] str = { "오만원", "만원", "천원", "500원", "100원", "50원", "10원", "1원" };
 int[] Don = { 50000, 10000, 1000, 500, 100, 50, 10, 1 };
 JCheckBox[] cb = new JCheckBox[8];

 Frame3()
 {
  this.setTitle("Test");
  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  this.setLayout(new BorderLayout());
  p_north.add(la1);
  p_north.add(TX1);
  p_north.add(btn);
  btn.addMouseListener(new MyMouseListener());
  p_center.setLayout(new GridLayout(8, 2));

  for (int i = 0; i < str.length; i++)
  {
   la[i] = new JLabel(str[i]);
   TF[i] = new JTextField(5);
   cb[i] = new JCheckBox();
   cb[i].setSelected(true);
   cb[i].setBackground(Color.PINK);
   p_center.add(la[i]);
   p_center.add(TF[i]);
   p_center.add(cb[i]);
  }
  cb[7].setVisible(false);
  p_north.setBackground(Color.PINK);
  p_center.setBackground(Color.PINK);
  this.add(p_north, BorderLayout.NORTH);
  this.add(p_center, BorderLayout.CENTER);
  this.setSize(300, 300);
  this.setVisible(true);
 }

 class MyMouseListener extends MouseAdapter
 {
  public void mouseClicked(MouseEvent e)
  {
   int Money = Integer.parseInt(TX1.getText());
   int m = 0;
   if (e.getSource() == btn)
   {
    for (int i = 0; i < Don.length; i++)
    {
     if(cb[i].isSelected() == false)
     {
      TF[i].setText("0");
      continue;  
     }
     
     m = Money / Don[i];
     TF[i].setText(Integer.toString(m));
     if (m > 0)
     {
      Money = Money % Don[i];
     }
    }
   }
  }
 }
}

public class myframe1
{
 public static void main(String[] args)
 {
  new Frame3();
 }
}
 

순자산 8.4억이면 상위 10%.JPG

인터넷에서 유명한 글인 순자산 8.4억이면 상위 10%에 대해 알아보도록 하겠습니다. 이 글을 처음부터 끝까지 읽다 보면 순자산 8.4억이면 상위 10%에 대해 아는데 도움이 될 것입니다. 순자산 8.4

tistorysolution.tistory.com

 

5. Focus 이벤트를 이용하여 텍스트필드 창에 문자열을 입력한 후 다른 창을 클릭하면 문자열을 모두 대문자로 변경하는 스윙 응용프로그램을 작성하라.

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;





class Frame5 extends JFrame

{

        JPanel p = new JPanel();

        JLabel la = new JLabel("입력한 후 다른 창에 마우스 클릭하면 대문자로                                     변합니다.");

        JTextField TF = new JTextField(20);

        Frame5()

        {

                this.setTitle("Focus Practice Frame");

                this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                p.add(la);

                p.add(TF);

                TF.addFocusListener(new focus());

                this.add(p);

                this.setVisible(true);

                this.setSize(450, 100);

                TF.requestFocus();

        }



        public class focus implements FocusListener

           {

            public void focusGained(FocusEvent e){}

           public void focusLost(FocusEvent e)

           {

               JTextField jt = (JTextField)e.getSource();

               jt.setText(jt.getText().toUpperCase());

           }           

          }



}



public class m5

{

        public static void main(String[] args)

        {

                new Frame5();

        }



}

 

6. JSlider를 이용하여 아래 그림과 같이 0에서 200까지 조절할 수 있는 수평 슬라이더 컴포넌트와 레이블 컴포넌트를 하나 만들고 사용자가 슬라이더를 움직이면 슬라이더의 값을 레이블 컴포넌트에 수치로 보여주는 스윙 응용프로그램을 작성하라.

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import javax.swing.event.*;





class Frame6 extends JFrame

{

        JPanel p = new JPanel();

        JSlider s = new JSlider(JSlider.HORIZONTAL,0,200,100);

        JLabel la = new JLabel("100");

        Frame6()

        {

                this.setTitle("Focus Practice Frame");

                this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                p.add(s);

                s.setPaintLabels(true);

                s.setPaintTicks(true);

                s.setPaintTrack(true);

                s.setMajorTickSpacing(50);

                s.setMinorTickSpacing(10);

                s.addChangeListener(new MyChangeListener());

                p.add(la);

                this.add(p);

                this.setVisible(true);

                this.setSize(450, 100);

        }



        class MyChangeListener implements ChangeListener

        {



                public void stateChanged(ChangeEvent e)

                {

                        int a =s.getValue();

                        la.setText(Integer.toString(a));

                }



        }

}



public class m6

{

        public static void main(String[] args)

        {

                new Frame6();

        }

        

}
 

주식하면 집안 망한다.

인터넷에서 화제인 주식하면 집안 망한다에 대해 알아보도록 하겠습니다. 이 글을 처음부터 끝까지 읽다 보면 주식하면 집안 망한다에 대해 아는데 도움이 될 것입니다. 주식하면 집안 망한

tistorysolution.tistory.com

 

 

7.JSlider를 이용하여 수평 슬라이더 컴포넌트를 만들고 슬라이더를 움직이면 jLabel컴포넌트의 문자열의 폰트 크기를 조절할 수 있는 스윙 응용프로그램을 작성하라. 폰트 크기는 1픽셀에서 100픽셀까지이며, 큰 눈금은 20간격, 작은 눈금은 5간격으로 하라.

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import javax.swing.event.*;



class Frame7 extends JFrame

{

        JPanel p = new JPanel();

        JSlider s = new JSlider(JSlider.HORIZONTAL,0,100,10);

        JLabel la = new JLabel("I Love Java");

        Frame7()

        {

                this.setTitle("Focus Practice Frame");

                this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                p.setLayout(new BorderLayout());



                p.add(s, BorderLayout.NORTH);

                s.setPaintLabels(true);

                s.setPaintTicks(true);

                s.setPaintTrack(true);

                s.setMajorTickSpacing(20);

                s.setMinorTickSpacing(5);

                s.addChangeListener(new MyChangeListener());

                p.add(la, BorderLayout.CENTER);

                this.add(p);

                this.setVisible(true);

                this.setSize(550, 250);



        }



        class MyChangeListener implements ChangeListener

        {



                public void stateChanged(ChangeEvent e)

                {

                        int a =s.getValue();

                        la.setFont(new Font("Arial", Font.PLAIN, a));

                }



        }

}



public class m7

{

        public static void main(String[] args)

        {

                new Frame7();

        }



}

 

8. JLabel 컴포넌트와 jTextArea컴포넌트를 하나 만들고 문자열을 입력하는 도중 입력 된 글자 수에 맞게 슬라이더 바가 움직이게 하라. 그리고 사용자는 슬라이더 바를 움직일 수 없으며 100자 이상 입력할 수 없게 하라.

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import javax.swing.event.*;



class Frame8 extends JFrame

{

        JPanel p = new JPanel();

        JLabel la = new JLabel();

        JSlider s = new JSlider(JSlider.HORIZONTAL,0,100,0);

        JTextArea TA = new JTextArea(10,10);

        JScrollPane scrol = new JScrollPane(TA);

        int a =s.getValue();



        Frame8()

        {

                this.setTitle("Focus Practice Frame");

                this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                p.setLayout(new BorderLayout());



                s.setPaintLabels(true);

                s.setPaintTicks(true);

                s.setPaintTrack(true);

                s.setMajorTickSpacing(20);

                s.setMinorTickSpacing(5);

                s.addChangeListener(new MyChangeListener());

                s.setEnabled(false);

                p.add(s, BorderLayout.SOUTH);



                TA.addKeyListener(new MyKeyListener());

                p.add(scrol, BorderLayout.CENTER);



                la.setVisible(false);

                p.add(la, BorderLayout.WEST);

                this.add(p);

                this.setVisible(true);

                this.setSize(550, 250);



        }



        class MyChangeListener implements ChangeListener

        {



                public void stateChanged(ChangeEvent e)

                {

                        la.setText(Integer.toString(a));

                }



        }



        class MyKeyListener implements KeyListener

        {



                public void keyPressed(KeyEvent e)

                {

                        int b = TA.getText().length();

                        if(b <100)

                        {

                                TA.setEnabled(true);

                                a = b;

                                s.setValue(a);

                        }

                        else

                        {

                                TA.setEnabled(false);

                        }

                }



                public void keyReleased(KeyEvent arg0) {}



                public void keyTyped(KeyEvent arg0) {}



        }

}



public class m8

{

        public static void main(String[] args)

        {

                new Frame8();

        }



}
 

내 생각엔 1기 신도시가 투자 가치 있을 거 같음

인터넷에서 화제인 내 생각엔 1기 신도시가 투자 가치 있을 거 같음에 대해 알아보도록 하겠습니다. 이 글을 처음부터 끝까지 읽다 보면 내 생각엔 1기 신도시가 투자 가치 있을 거 같음에 대해

tistorysolution.tistory.com

 

 

9.

 

 

10.10개의 레이블을 순서대로 클릭하는 간단한 게임을 만들어 보자. 15 x 15 크기로 0에서 9까지 숫자를 가진 레이블 컴포넌트를 10개 만들고 이들을 프레임 내에 랜덤한 위치에 배치한다. 사용자가 0부터 9까지 순서대로 클릭하여 10개를 모두 클릭하면 다시 10개의 레이블을 랜덤한 위치에 배치한다. 클릭된 레이블 컴포넌트는 화면에서 보이지 않게 하며 반드시 번호 순서로 클릭되게 하라.


import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import javax.swing.event.*;



class Frame10 extends JFrame

{

        JPanel p = new JPanel();

        JLabel[] la = new JLabel[10];

        int j = 0;



        Frame10()

        {

                this.setTitle("Focus Practice Frame");

                this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);



                p.setLayout(null);

                for(int i= 0; i <la.length i++)

                {

                        int x = (int)(Math.random()*300);

                        int y = (int)(Math.random()*300);

                        la[i] = new JLabel();

                        la[i].setText(Integer.toString(i));

                        la[i].setSize(15, 15);

                        la[i].setLocation(x, y);

                        la[i].addMouseListener(new MyMouseListener());

                        p.add(la[i]);

                }

                this.add(p);

                this.setSize(350, 350);

                this.setVisible(true);

        }



        class MyMouseListener extends MouseAdapter

        {



                public void mouseClicked(MouseEvent e)

                {

                        JLabel label = new JLabel();

                        label = (JLabel)e.getSource();



                if(Integer.parseInt(label.getText()) <= Integer.parseInt(la[j].getText()))

                        {

                                label.setVisible(false);

                                j++;

                                if(Integer.parseInt(label.getText()) == 9)

                                {

                                        for(int i =0; i < la.length i++)

                                        {

                                                int x = (int)(Math.random()*300);

                                                int y = (int)(Math.random()*300);

                                                la[i].setLocation(x, y);

                                                la[i].setVisible(true);

                                        }

                                }

                        }

                }



        }

}



public class m10

{

        public static void main(String[] args)

        {

                new Frame10();

        }



}
 

반박환영) 우리나라에서 살만한 동네 최종 6곳

인터넷에서 화제인 우리나라에서 살만한 동네 최종 6곳에 대해 알아보도록 하겠습니다. 이 글을 처음부터 끝까지 읽다 보면 우리나라에서 살만한 동네 최종 6곳에 대해 아는데 도움이 될 것입니

tistorysolution.tistory.com

 

 

 
 
 
728x90
그리드형

댓글