import java.util.Scanner;

class Person {
 int age;
 public String name;
 protected int cm;
 private int kg;
 
 void Setkg(int k){
  kg = k;
 }
 
 int Getkg(){
  return kg;
 }
}
public class Student extends Person {
 static Scanner sc;
 
 void printKG(int c, int k) {
  int weight =(int)((c-100)*0.9);
  if(weight < 60) {
   System.out.println("저체중");
  }
  else if(weight>=60 && weight <=80) {
   System.out.println("정상체중");
  }
  else {
   System.out.println("과체중");
  }
  
 }
 public static void main(String[] args) {
  Student s = new Student();
  sc = new Scanner(System.in);
  
  System.out.println("나이 입력 : ");
  s.age = sc.nextInt();
  System.out.println("이름 입력 : ");
  s.name = sc.next();
  System.out.println("키 입력 : ");
  s.cm = sc.nextInt();
  System.out.println("몸무게 입력 : ");
  s.Setkg(sc.nextInt());
  
  s.printKG(s.cm, s.Getkg()); // 키와 몸무게를 매개변수로 전달
 }

 

import java.awt.BorderLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

/*
 * [1] 보더레이아웃을 이용하여 동, 서, 남, 북, 가운데에 버튼 배치
 */

public class Border1 extends JFrame{
 Border1() {
  this.setTitle("보더레이아웃 예제");
  this.setSize(300, 200);
  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  // this.setLayout(new BorderLayout()); // 프레임에 대한 배치관리자 설정
  //================== 코드 작성 구간 ==================

  JPanel pnl = new JPanel(); // 패널에 버튼 부착
  pnl.setLayout(new BorderLayout());
  JButton b1 = new JButton("북");
  JButton b2 = new JButton("동");
  JButton b3 = new JButton("서");
  JButton b4 = new JButton("남");
  
  pnl.add(b1,BorderLayout.NORTH);
  pnl.add(b2,BorderLayout.EAST);
  pnl.add(b3,BorderLayout.WEST);
  pnl.add(b4,BorderLayout.SOUTH);
  
  ImageIcon img = new ImageIcon("logo_flag_w.jpg"); // 이미지 저장할 객체 생성
  JButton b5 = new JButton(img);
  pnl.add(b5,BorderLayout.CENTER);
  //==============================================
  this.add(pnl);
  this.setVisible(true);
 }

 public static void main(String[] args) {
  Border1 border1 = new Border1();

 }

}

 

import java.awt.GridLayout;

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

/*
 * [2] 그리드 레이아웃을 이용하여 학생정보를 입력하는 화면을 설계하시오.
 *   - JLabel : 학번, 이름, 학과, 학년
 *   - JTextField : 학번, 이름, 학과, 학년
 *   - JButton : [입력], [취소]
 */
public class Grid1 extends JFrame{
 Grid1() {
  this.setTitle("그리드레이아웃 예제");
  this.setSize(300, 200);
  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  
  //================== 코드 작성 구간 ==================

  JPanel pnl = new JPanel(); // 패널에 버튼 부착
  pnl.setLayout(new GridLayout(5,2, 5,5));
  
  JLabel lbl1 = new JLabel("학번"); JLabel lbl2 = new JLabel("이름");
  JLabel lbl3 = new JLabel("학과"); JLabel lbl4 = new JLabel("학년");
  
  JTextField tf1 = new JTextField(5); JTextField tf2 = new JTextField(5);
  JTextField tf3 = new JTextField(5); JTextField tf4 = new JTextField(5);
  
  JButton btn1 = new JButton("입력"); JButton btn2 = new JButton("취소");
  
  pnl.add(lbl1); pnl.add(tf1); pnl.add(lbl2); pnl.add(tf2);
  pnl.add(lbl3); pnl.add(tf3); pnl.add(lbl4); pnl.add(tf4);
  pnl.add(btn1); pnl.add(btn2);
  //==============================================
  
  this.add(pnl);
  this.setVisible(true);
  
 }

 public static void main(String[] args) {
  // Grid1 grid = new Grid1(); // 생성자 호출
  new Grid1(); // 생성자 호출
 }

 

import java.awt.Color;

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

/*
 * [3] 널 레이아웃으로 설정 후, setLocation(x,y)에 버튼 9개 출력하기
 *   이때, 버튼은 15픽셀씩 이동시켜 겹쳐지도록 배치한다.
 *   - JLabel은 (130,50) 위치에 출력
 */
public class Null1 extends JFrame{
 Null1() {
  this.setTitle("NULL 레이아웃 예제");
  this.setSize(300, 300);
  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  
  //================== 코드 작성 구간 ==================

  JPanel pnl = new JPanel(); // 패널에 버튼 부착
  pnl.setLayout(null);
  
  JLabel lbl1 = new JLabel("Hello, Press Button");
  lbl1.setSize(130, 20); // 라벨의 크기 설정
  lbl1.setLocation(130, 50); // 라벨의 출력위치 설정
  pnl.add(lbl1);
  pnl.setBackground(Color.YELLOW);
  
  // 버튼 1 = (15,15) 버튼 2 = (30,30) 버튼 3 = (45,45) 버튼 4 = (60,60)
  for(int i = 1; i<=9; i++) {
   JButton btn = new JButton(Integer.toString(i));
   btn.setLocation(15*i, 15*i);
   btn.setSize(50, 20);
   pnl.add(btn);
  }
     //==============================================
  
  this.add(pnl);
  this.setVisible(true);
 }

 public static void main(String[] args) {
  new Null1();

 }

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;

/*
 * [4] 버튼에 ActionListener()를 달고, 액션 이벤트가 발생하면
 *  ActionPerformed() 메소드가 호출되어 버튼의 글자를 [삽입]/[수정] 토글 시키기
 */
class MyAction implements ActionListener { // 액션이벤트 처리하는 루틴 리스너를 상속받기
 public void actionPerformed(ActionEvent e) { // 액션이벤트가 발생하면 호출되는 메소드
  JButton btn = (JButton) e.getSource();
  if(btn.getText().equals("삽입")) // 삽입과 같으면 수정으로
   btn.setText("수정");
  else
   btn.setText("삽입"); // 수정과 같으면 삽입으로
 }
}
public class Action1 extends JFrame {
 Action1() {
  this.setTitle("NULL 레이아웃 예제");
  this.setSize(300, 300);
  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  this.setLayout(new FlowLayout()); // 프레임에 대한 배치관리자 설정
  
  //================== 코드 작성 구간 ==================
  // 1) 버튼 만들기
  JButton btn1 = new JButton("삽입");
  // 2) 버튼에 액션리스너 만들기
  btn1.addActionListener(new MyAction());
  this.add(btn1);
  //==============================================
  
  this.setVisible(true);
 }

 public static void main(String[] args) {
  new Action1();
 }

}

 

----------------------------------------------------------------------------------------- 배경 색 추가

class MyAction implements ActionListener { // 액션이벤트 처리하는 루틴 리스너를 상속받기
 public void actionPerformed(ActionEvent e) { // 액션이벤트가 발생하면 호출되는 메소드
  JButton btn = (JButton) e.getSource();
  if(btn.getText().equals("삽입")) { // 삽입과 같으면 수정으로
   btn.setText("수정");
   btn.setBackground(Color.RED);
  }
  else {
   btn.setText("삽입"); // 수정과 같으면 삽입으로
   btn.setBackground(Color.BLUE);
  }
 }
}

import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
/*
 *  [2] 체크박스를 갖는 배열 3개(티셔츠, 모자, 운동화)를 생성하여,
 *      각 체크박스를 선택하면 금액이 출력되는(JLabel) 프로그램
 *      - 첫 번째 라벨 생성 : 품명, 금액 -> 폰트(궁서체, 굵게, 20pt) 설정
 *      - 체크박스 3개 배열
 *      - 두 번째 라벨 : 지불할 합계 금액(int sum = 0;)이 합계
 *      - 만약, 체크 해제시 => 합계 금액에서 차감되도록 설정
 */
public class Check2 extends JFrame {
 JPanel p;
 JLabel lbl = new JLabel();
 int sum = 0; // 합계 금액
 JCheckBox[] Order = new JCheckBox[3]; // 3개 품목을 갖는 체크박스
 String[] name = {"티셔츠", "모자", "운동화"}; // 체크박스 문자열로 사용
 
 Check2() {
  this.setTitle("배열 체크박스 주문 예제");
  this.setSize(600, 300);
  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  
  p = new JPanel(); p.setLayout(new FlowLayout());
  
  // 첫 번째 라벨 생성
  JLabel l = new JLabel("티셔츠 -10,000원     모자-7,000원     운동화-20,000원");
  l.setFont(new Font("궁서체", Font.BOLD, 20));
  p.add(l);
  
  // 문자열을 갖는 체크박스 3개 생성 => 패널 부착 => 리스너 등록
  for(int i=0; i<Order.length; i++) {
   Order[i] = new JCheckBox(name[i]); // 문자열을 갖는 체크박스 생성
   Order[i].setBorderPainted(true); // 체크박스의 외곽선(테두리) 보여주기
   p.add(Order[i]); // 패널에 체크박스 부착하기
   Order[i].addItemListener(new MyItem()); // 체크박스에 리스너 등록
  }
  
  // 계산 총 금액 라벨 출력하고 패널에 부착
  lbl.setText("계산 총 금액은 0원 입니다.");
  p.add(lbl);
  
  this.setContentPane(p);
  this.setVisible(true);
 }
 
 class MyItem implements ItemListener {
  public void itemStateChanged(ItemEvent e) {
   int select = 1;
   if(e.getStateChange() == ItemEvent.SELECTED)
    select = 1;
   else
    select = -1;
   
   if(e.getItem() == Order[0])
    sum = sum+(10000*select);
   else if(e.getItem() == Order[1])
    sum = sum+(7000*select);
   else
    sum = sum+(20000*select);
   
   lbl.setText("계산 총 금액은" + sum + "원 입니다.");
  }
 }
 
 public static void main(String[] args) {
  new Check2();

 }

import java.awt.FlowLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

/*
 *  [1] 버튼 그룹에 체크박스 3개 만들어 선택하면 해당 이미지가 출력되는 프로그램
 *      예) 사과(checkbox) / 배(checkbox) / 체리(checkbox)
 *      (+) 버튼을 그룹으로 묶으면, 2가지 이상 체크가 불가능하다.
 */

public class Check1 extends JFrame {
    // 이미지 3개 저장할 객체 생성

    // 해당 이미지는 예시이므로, workspace 폴더에 이미지를 삽입 해주어야 한다.
 ImageIcon img1 = new ImageIcon("a.jpg");
 ImageIcon img2 = new ImageIcon("b.jpg");
 ImageIcon img3 = new ImageIcon("c.jpg");
 JLabel lbl = new JLabel();
 JPanel p;
 
 Check1() {
  this.setTitle("체크박스 예제");
  this.setSize(500, 300);
  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  
  p = new JPanel(); p.setLayout(new FlowLayout());
  
  JCheckBox cb1 = new JCheckBox("코알라");
  JCheckBox cb2 = new JCheckBox("수국");
  JCheckBox cb3 = new JCheckBox("튤립");
  
  ButtonGroup bg = new ButtonGroup(); // 체크박스 여러개 중 하나만 선택되도록 설정
  bg.add(cb1); bg.add(cb2); bg.add(cb3);
  
  cb1.addItemListener(new ItemListener()
   {

   @Override
   public void itemStateChanged(ItemEvent e) {
    if(e.getStateChange() == ItemEvent.SELECTED)
     lbl.setIcon(img1);
     
   }
   }
    );
  cb2.addItemListener(new ItemListener()
  {

  @Override
  public void itemStateChanged(ItemEvent e) {
   if(e.getStateChange() == ItemEvent.SELECTED)
    lbl.setIcon(img2);
    
  }
  }
   );
  cb3.addItemListener(new ItemListener()
  {

  @Override
  public void itemStateChanged(ItemEvent e) {
   if(e.getStateChange() == ItemEvent.SELECTED)
    lbl.setIcon(img3);
    
  }
  }
   );
  
  p.add(cb1); p.add(cb2); p.add(cb3);
  p.add(lbl);
  this.setContentPane(p); // 컨텐츠를 프레임에 부착
  this.setVisible(true);
 }

 public static void main(String[] args) {
  new Check1();

 }

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;

/*
 *  [3] JTextField 에 문자열을 입력하고 [추가] 버튼을 누르면 JTextArea 컴포넌트에 추가(.Append) 되도록.
 */
public class Text1 extends JFrame {
 JTextField tf;
 JButton btn;
 JTextArea ta;
 JPanel p;
 
 Text1() {
  this.setTitle("텍스트 문자열 예제");
  this.setSize(500, 300);
  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  
  p = new JPanel(); p.setLayout(new FlowLayout());
  
  tf = new JTextField(30);
  btn = new JButton("추가");
  btn.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    ta.append(tf.getText()+"\n");
    tf.setText("");
    
   }
  });
  
  ta = new JTextArea(7,30);
  
  p.add(tf); p.add(btn); p.add(ta);
  
  this.setContentPane(p);
  this.setVisible(true);
 }

 public static void main(String[] args) {
  new Text1();

 }

}

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

/*
 *  [1] JMenuBar 에 등록 : [File], [Edit], [View], [Help]
 *    1) [View] 메뉴 클릭 시 - [Show], [Hidden] 서브 메뉴(메뉴 아이템)
 *    2) [File] 메뉴 클릭 시 - [New], [Notepad], [Calc], [msPaint], [Exit] 메뉴아이템
 *       - 단, [New] 메뉴 아래에 구분선 삽입, [msPaint] 메뉴 아래에도 구분선 삽입
 *       - [Exit] 메뉴 선택 시 : 종료 확인 다이얼로그(예/아니오 버튼) -> "예" 버튼 누르면 프로그램 종료
 */
public class Menu extends JFrame{
 JPanel p = new JPanel();
 JLabel imglbl = new JLabel(); // 이미지를 출력할 라벨 생성
 
 Menu() {
  this.setTitle("나만의 프로그램");
  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  this.setSize(800, 700);
  
  //=============================== 메뉴바와 메뉴아이템 생성하는 메소드 호출 ===============================
  createMenu();
  // ========================================================================================
  p.setLayout(new BorderLayout()); // 동서남북, 가운데 방향 지정
  p.add(imglbl, BorderLayout.CENTER); // 이미지 라벨을 가운데에 출력
  this.setContentPane(p); // 프레임의 컨테이너로 패널을 부착
  this.setVisible(true); // 화면 보이기
 }
 
  void createMenu() {
   // 메뉴바 생성
   JMenuBar mb = new JMenuBar();
   // [File], [Edit], [View], [Help] 메뉴 생성
   JMenu fileMenu = new JMenu("File");
   // 배열을 이용해 메뉴아이템 생성, 액션리스너 달기 [New], [Notepad], [Calc], [msPaint], [Exit]
   JMenuItem[] menuItem = new JMenuItem[5];
   String[] menuTitle = {"새로만들기", "메모장", "계산기", "그림판", "끝내기"};
   for(int i=0; i<menuItem.length; i++) {
    menuItem[i] = new JMenuItem(menuTitle[i]); // 문자열 갖는 메뉴아이템 생성
    menuItem[i].addActionListener(new ShowAction()); // actionPerformed() 메소드가 실행
    fileMenu.add(menuItem[i]);
    if(i==0 || i==3) { // 파일 메뉴의 메뉴아이템 0번, 3번 아래에 구분선 삽입하기
     fileMenu.addSeparator();
    }
    
   }
   //================================================================================
   JMenu editMenu = new JMenu("Edit");
   
   JMenu viewMenu = new JMenu("View");
   // 액션리스너 달기 : [Show], [Hidden] 메뉴 아이템 부착
   JMenuItem showItem = new JMenuItem("Show");
   showItem.addActionListener(new ShowAction()); // actionPerformed() 메소드가 실행
   viewMenu.add(showItem);
   
   viewMenu.addSeparator(); // 분리선 삽입
   
   JMenuItem hiddenItem = new JMenuItem("Hidden");
   hiddenItem.addActionListener(new ShowAction()); // actionPerformed() 메소드가 실행
   viewMenu.add(hiddenItem);
   //=================================================================================
   JMenu helpMenu = new JMenu("Help");
   
   // 메뉴바에 생성한 메뉴 등록하기
   mb.add(fileMenu);  mb.add(editMenu);
   mb.add(viewMenu); mb.add(helpMenu);
   // 프레임에 메뉴바 부착하기
   this.setJMenuBar(mb);
  }
  class ShowAction implements ActionListener {
   public void actionPerformed(ActionEvent e) {
    String cmd = e.getActionCommand(); // 선택한 메뉴 아이템의 문자열 리턴
    switch(cmd) {
    case "Show" : // 이미지 보이기
     imglbl.setIcon(new ImageIcon("a.jpg"));
     imglbl.setVisible(true);
     break;
    case "Hidden" : // 이미지 감추기
     imglbl.setVisible(false);
     break;
    // "새로만들기", "메모장", "계산기", "그림판", "끝내기"
    case "새로만들기" :
     imglbl.setIcon(null); // 이미지 출력하는 라벨 초기화
     break;
    case "메모장" :
     try { // 메모장 프로그램 가져와 실행하기
      Process ps1 = Runtime.getRuntime().exec("c:\\windows\\notepad.exe");
     }catch(IOException e1) { // 파일이 없거나 예외사항이 발생하면
      System.out.println("파일이 없습니다.");
     }
     break;
    case "계산기" : 
     try { // 메모장 프로그램 가져와 실행하기
      Process ps1 = Runtime.getRuntime().exec("c:\\windows\\system32\\calc.exe");
     }catch(IOException e1) { // 파일이 없거나 예외사항이 발생하면
      System.out.println("파일이 없습니다.");
     }
     break;
    case "그림판" :
     try { // 메모장 프로그램 가져와 실행하기
      Process ps1 = Runtime.getRuntime().exec("c:\\windows\\system32\\mspaint.exe");
     }catch(IOException e1) { // 파일이 없거나 예외사항이 발생하면
      System.out.println("파일이 없습니다.");
     }
     break;
    case "끝내기" :
     // JOptionPane.showConfirmDialog( null, "출력메세지", "타이틀", "버튼종료");
     int result = JOptionPane.showConfirmDialog(null, "끝내시겠습니까?", "종료", JOptionPane.YES_NO_OPTION);
     if(result==JOptionPane.CANCEL_OPTION) {
      // [X] 버튼 누른 경우
      break;
     }
     else if(result==JOptionPane.YES_OPTION) {
      System.exit(0); // 예 버튼 누른 경우
      break;
     }
     else {
      break; // 아니오 버튼 누른 경우
     }
    }
   }
  }
  
 public static void main(String[] args) {
  new Menu();
 }

 

import java.awt.FileDialog;
import java.awt.FlowLayout;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;

public class Project extends JFrame {

JTextField tf;
JButton btn;
JTextArea ta;
JPanel p;
JLabel imglbl = new JLabel();

Project() {
this.setTitle("1번 유형");
this.setSize(800, 500);

createMenu();

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

p = new JPanel();
p.setLayout(new FlowLayout());

tf = new JTextField(60);
btn = new JButton("확인");
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ta.append(tf.getText() + "\n");
tf.setText("");
}
});
ta = new JTextArea(40, 60);

p.add(tf);
p.add(btn);
p.add(ta);

this.setContentPane(p);
this.setVisible(true);
}

void createMenu(){
JMenuBar mb = new JMenuBar();

JMenu fileMenu = new JMenu("File");

JMenuItem[] menuItem = new JMenuItem[2];
String[] menuTitle = {"저장하기", "끝내기"};

for(int i=0; i menuItem[i] = new JMenuItem( menuTitle[i] );
menuItem[i].addActionListener(new ShowAction());
fileMenu.add( menuItem[i] );
if(i==0 || i==3)
fileMenu.addSeparator();
}

mb.add(fileMenu);

this.setJMenuBar(mb);
}

class ShowAction implements ActionListener{
public void actionPerformed(ActionEvent e){
String cmd = e.getActionCommand();
switch(cmd){
case "저장하기" :
SaveAs();
break;
case "끝내기" :
int result = JOptionPane.showConfirmDialog(null,"끝내시겠습니까?","종료", JOptionPane.YES_NO_OPTION);
if( result==JOptionPane.CLOSED_OPTION )
break;
else if( result==JOptionPane.YES_OPTION){
System.exit(0);
break;
}
else
break;
}
}
}
public void SaveAs() {
String text = ta.getText();
try
{
BufferedWriter out = new BufferedWriter(new FileWriter("c:\\Test.txt"));
out.write(text, 0, text.length());
out.flush();
out.close();
} catch(IOException except) {}
}
public static void main(String[] args) {
new Project();
}
}

+ Recent posts