1. JMenu



ex> Test01_JMenu.java


메뉴생성 및 메뉴의 책상을 누르면 해당 색상으로 바탕화면 변경.

package test02;

import java.awt.Color;

import java.awt.Container;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JFrame;

import javax.swing.JMenu;

import javax.swing.JMenuBar;

import javax.swing.JMenuItem;


class MyFrame01 extends JFrame implements ActionListener{

    JMenuBar bar=new JMenuBar();

    JMenu menu1=new JMenu("파일");

    JMenu menu2=new JMenu("편집");

    JMenuItem item1=new JMenuItem("빨강");

    JMenuItem item2=new JMenuItem("파랑");

    JMenuItem item3=new JMenuItem("노랑");

    JMenuItem item4=new JMenuItem("종료");

    Container con;

    public MyFrame01(){

        con=getContentPane();

        

        //프레임에 메뉴바 붙이기

        setJMenuBar(bar);


        //메뉴바에 메뉴붙이기

        bar.add(menu1);

        bar.add(menu2);


        //메뉴에 하위메뉴(메뉴아이템)붙이기

        menu1.add(item1);

        menu1.add(item2);

        menu1.add(item3);

        menu1.add(item4);

        

        //메뉴아이템에 이벤트리스너 등록하기

        item1.addActionListener(this);

        item2.addActionListener(this);

        item3.addActionListener(this);

        item4.addActionListener(this);

        

        setSize(400,400);

        setVisible(true);

        setDefaultCloseOperation(EXIT_ON_CLOSE);

    }

    @Override

    public void actionPerformed(ActionEvent e){

        if(e.getSource()==item1){

            con.setBackground(Color.RED);

        }else if(e.getSource()==item2){

            con.setBackground(Color.BLUE);

        }else if(e.getSource()==item3){

            con.setBackground(Color.YELLOW);

        }else if(e.getSource()==item4){

            System.exit(0);

        }

    }

}

public class Test01_JMenu{

    public static void main(String[] args) {

        new MyFrame01();

    }

}

 


 

 






2. JList



ex> Test02_JList.java

package test02;

import java.awt.BorderLayout;

import javax.swing.JComboBox;

import javax.swing.JFrame;

import javax.swing.JList;

class MyFrame02 extends JFrame{

    JList<String> list;

    JComboBox<String> combo;


    public MyFrame02() {

        setLayout(new BorderLayout());

        

        String[] slist={"홍길동","김철수","이영희"};

        list=new JList<String>(slist);

        String[] part={"영업부","생산부"};

        combo=new JComboBox<String>(part);

        

        add(combo,BorderLayout.NORTH);

        add(list,BorderLayout.CENTER);

        

        setSize(400,400);

        setVisible(true);

        setDefaultCloseOperation(EXIT_ON_CLOSE);

    }

}

public class Test02_JList{

    public static void main(String[] args) {

        new MyFrame02();

    }

}


 


 





ex> Test03_JList.java

추가 버튼으로 입력한 내용을 추가한다. (삭제)

package test02;

import java.awt.BorderLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.KeyAdapter;

import java.awt.event.KeyEvent;

import javax.swing.DefaultListModel;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JList;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTextField;

class MyFrame03 extends JFrame implements ActionListener{

    JTextField txt=new JTextField(15);

    JButton btnAdd=new JButton("추가");

    JButton btnDel=new JButton("삭제");

    JPanel pan=new JPanel();

    JList<String> list;


    //JList와 연결될 모델객체 생성하기

    DefaultListModel<String> model=new DefaultListModel<>();


    public MyFrame03() {

        setLayout(new BorderLayout());

        pan.add(txt);

        pan.add(btnAdd);

        pan.add(btnDel);

        

        model.addElement("홍길동");

        model.addElement("홍길서");

        model.addElement("홍길남");

        model.addElement("홍길북");


        //모델객체와 연결된 JList생성하기

        list=new JList<String>(model);

        

        add(pan,BorderLayout.NORTH);

        add(new JScrollPane(list),BorderLayout.CENTER);

        

        btnAdd.addActionListener(this);

        btnDel.addActionListener(this);

        

        //텍스트필드에 키보드로 키값을 누를때마다 이를 감지하는 이벤트 리스너 등록

        txt.addKeyListener(new KeyAdapter(){

            public void keyPressed(KeyEvent e){

                //누른 키값 얻어오기

                int keyCode=e.getKeyCode();

                //누른 키가 엔터키인경우

                if(keyCode==KeyEvent.VK_ENTER){

                    addData();//입력된 문자열을 Model객체에 추가하기

                }

            }

        });

        setSize(400,400);

        setVisible(true);

        setDefaultCloseOperation(EXIT_ON_CLOSE);

    }

    @Override

    public void actionPerformed(ActionEvent e) {

        //추가버튼을 누른경우

        if(e.getSource()==btnAdd){

            addData();


        }else if(e.getSource()==btnDel){

        //삭제버튼을 누른 경우

            //선택된 인덱스번호 얻어오기

            int index=list.getSelectedIndex();

            //선택한 항목이 없는 경우

            if(index==-1){

                JOptionPane.showMessageDialog(this,"삭제할 항목을 선택하세요!");

                return;//메소드 끝내기

            }else{

                //선택한 항목 얻어오기

                String value=list.getSelectedValue();


                //부모컴포넌트, 보여줄메시지, 타이틀,  버튼형태

                int btn=JOptionPane.showConfirmDialog(this,

                        value+"님을 정말로 삭제할까요?",

                        "삭제",

                        JOptionPane.YES_NO_OPTION

                        );


                //아니오 버튼을 누른 경우

                if(btn==JOptionPane.NO_OPTION){

                    return;

                }

            }

            //해당 인덱스데이터를 Model에서 삭제하기

            model.remove(index);

        }

    }

    private void addData(){

        //입력된 문자열 얻어오기

        String str=txt.getText();


        //데이터 추가는 Model객체에 해야 함

        model.addElement(str);


        txt.setText("");

        txt.requestFocus();

    }

}

public class Test03_JList{

    public static void main(String[] args) {

        new MyFrame03();

    }

}


 


 





3. JTable



ex> Test04_JTable.java


package test02;

import java.awt.BorderLayout;

import javax.swing.JFrame;

import javax.swing.JScrollPane;

import javax.swing.JTable;

class MyFrame04 extends JFrame{

    JTable tb;


    public MyFrame04() {

        setLayout(new BorderLayout());


        //JTable(Object[][] rowData, Object[] columnNames)

        String[][] rowData={

             {"홍길동","010-111-1234","경기도"},

             {"홍길서","010-222-3333","서울"},

             {"홍길남","010-333-4567","노원구"},

             {"홍길북","010-444-9876","경기도"}};

        String colNames[]={"이름","전화번호","주소"};


        //JTable생성

        tb=new JTable(rowData,colNames);

        

        //JTable을 Center영역에 붙이기

        add(new JScrollPane(tb),BorderLayout.CENTER);

        

        setSize(500,500);

        setVisible(true);

        setDefaultCloseOperation(EXIT_ON_CLOSE);

    }

}

public class Test04_JTable{

    public static void main(String[] args) {

        new MyFrame04();

    }

}


 


 




ex> Test05_JTable.java


package test02;

import java.awt.BorderLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.Vector;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JList;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.JTextField;

import javax.swing.table.DefaultTableModel;


class MyFrame05 extends JFrame implements ActionListener{

    JTextField txtName=new JTextField(5);

    JTextField txtPhone=new JTextField(5);

    JTextField txtAddr=new JTextField(10);

    JPanel pan=new JPanel();

    JButton btnAdd=new JButton("추가");

    JButton btnDel=new JButton("삭제");

    JTable tb;

    DefaultTableModel model;


    public MyFrame05() {

        setLayout(new BorderLayout());

        pan.add(new JLabel("이름"));

        pan.add(txtName);

        pan.add(new JLabel("전화"));

        pan.add(txtPhone);

        pan.add(new JLabel("주소"));

        pan.add(txtAddr);

        pan.add(btnAdd);

        pan.add(btnDel);


        //public DefaultTableModel(Vector columnNames, int rowCount)

        //컬럼명을 Vector에 저장하기

        Vector<String> cols=new Vector<String>();

        cols.add("이름");

        cols.add("전화");

        cols.add("주소");


        //JTable과 연결될 모델객체 생성

        model=new DefaultTableModel(cols,0);


        //model객체와 연결되는 JTable생성

        tb=new JTable(model);

        

        add(pan,BorderLayout.NORTH);

        add(new JScrollPane(tb),BorderLayout.CENTER);

        

        //버튼에 이벤트리스너등록하기

        btnAdd.addActionListener(this);

        btnDel.addActionListener(this);

        

        setSize(500,500);

        setVisible(true);

        setDefaultCloseOperation(EXIT_ON_CLOSE);

    }

    @Override

    public void actionPerformed(ActionEvent e) {

        // 추가버튼을 누른경우

        if(e.getSource()==btnAdd){

            //입력된 데이터 얻어오기

            String name=txtName.getText();

            String phone=txtPhone.getText();

            String addr=txtAddr.getText();

            

            //모델객체에 데이터 추가하기

            String []rows={name,phone,addr};

            model.addRow(rows);

        }else if(e.getSource()==btnDel){

            //선택한 행번호 얻어오기

            int index=tb.getSelectedRow();

            

            //선택한 행이 없는 경우

            if(index==-1){

                JOptionPane.showMessageDialog(this,"삭제할 회원 선택!");

                return;

            }

            //삭제는 Model객체에서 해야 함!

            model.removeRow(index);

        }

    }

}

public class Test05_JTable{

    public static void main(String[] args) {

        new MyFrame05();

    }

}

 

 

 

 






4. JDialog



ex> Test06_Dlg.java

로그인 버튼 - 로그인 팝업 창 오픈 - 아이디/비번 입력 체크

package test02;

import java.awt.FlowLayout;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JDialog;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JTextField;


class MyFrame06 extends JFrame implements ActionListener{

    JButton btn1=new JButton("로그인");

    JLabel lbl=new JLabel();


    public MyFrame06() {

        setLayout(new FlowLayout());

        add(btn1);

        add(lbl);

        btn1.addActionListener(this);

        setSize(500,500);

        setVisible(true);

        setDefaultCloseOperation(EXIT_ON_CLOSE);

    }

    @Override

    public void actionPerformed(ActionEvent e) {

        LoginDlg dlg=new LoginDlg(this);

        dlg.txtId.setText("admin");

    }

}

class LoginDlg extends JDialog implements ActionListener{

    MyFrame06 frm;

    JTextField txtId=new JTextField();

    JTextField txtPwd=new JTextField();

    JButton btnOk=new JButton("확인");

    JButton btnCancel=new JButton("취소");


    public LoginDlg(MyFrame06 frm){

        this.frm=frm;    

        setLayout(new GridLayout(3,2));

        add(new JLabel("아이디"));

        add(txtId);

        add(new JLabel("비밀번호"));

        add(txtPwd);

        add(btnOk);

        add(btnCancel);        

        btnOk.addActionListener(this);        

        setSize(200,120);

        setVisible(true);

    }

    @Override

    public void actionPerformed(ActionEvent e) {

        if(txtId.getText().equals("song") && txtPwd.getText().equals("1234")){

            frm.lbl.setText(txtId.getText()+"님 환영합니다.");


            //다이얼로그 닫기

            dispose();

        }else{

            JOptionPane.showMessageDialog(this,"아이디 또는 비밀번호가 틀려요!");

        }

    }

}

public class Test06_Dlg{

    public static void main(String[] args) {

        new MyFrame06();

    }

}

 

 


 


 


 

 

'JAVA' 카테고리의 다른 글

이클립스 UTF-8 설정  (0) 2014.09.13
Swing ( Ⅱ )  (0) 2014.09.13
Swing ( Ⅰ )  (0) 2014.09.13
내부클래스(inner class) / 로컬 내부 클래스 / static 내부 클래스 / 익명의 내부클래스 / url  (0) 2014.09.13
멀티 채팅 샘플  (0) 2014.09.13

+ Recent posts