Java : GUI 회원 명단 추가삭제 프로그램(Table 등)

Java Programming|2018. 11. 21. 20:15
반응형

import java.awt.BorderLayout;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.ArrayList;

 

import javax.swing.ButtonGroup;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JRadioButton;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.JTextField;

import javax.swing.table.DefaultTableModel;

 

public class TableTest2 extends JFrame {

 

ArrayList<MemberVO> members = new ArrayList<MemberVO>();

 

public TableTest2() {

 

setTitle("회원 명단 추가삭제 프로그램");

setDefaultCloseOperation(EXIT_ON_CLOSE);

setAlwaysOnTop(true);

setBounds(200, 100, 400, 200);

반응형

//표 제목줄

String[] colNames = new String[] {"Name", "Age", "Gender"};

//표에 들어갈 데이터들.. /처음엔 빈 테이블 만들기 위해.. 데이터관리객체 생성

DefaultTableModel model = new DefaultTableModel(colNames, 0);

 

JTable table = new JTable(model);

JScrollPane scrollPane = new JScrollPane(table);

add(scrollPane, BorderLayout.CENTER);

 

//테이블 아래쪽에 데이터 입력 할수있는 패널

JPanel bottomPanel = new JPanel();

bottomPanel.setLayout(new GridLayout(2, 1));

 

JPanel panel = new JPanel();

JTextField tfName = new JTextField(6);

JTextField tfAge = new JTextField(3);

JRadioButton rb1 = new JRadioButton("Female");

JRadioButton rb2 = new JRadioButton("male");

JRadioButton rb3 = new JRadioButton();

ButtonGroup rg = new ButtonGroup();

rg.add(rb1); rg.add(rb2); rg.add(rb3);

rb1.setSelected(true);

 

panel.add(new JLabel("NAME"));

panel.add(tfName);

panel.add(new JLabel("AGE"));

panel.add(tfAge);

panel.add(rb1); panel.add(rb2);

bottomPanel.add(panel);

 

JPanel panel2 = new JPanel();

JButton btnAdd = new JButton("Add");

JButton btnDel = new JButton("Delete");

panel2.add(btnAdd); panel2.add(btnDel);

bottomPanel.add(panel2);

 

btnAdd.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

//입력된 값 테이블에 추가하기

//입력된 값들을 한줄 데이터 덩어리(배열)로 만들어줘야 함    ←←←

String[] rows = new String[3];

rows[0] = tfName.getText();

rows[1] = tfAge.getText();

if(rb1.isSelected()) rows[2] = "female";

else rows[2] = "male";

model.addRow(rows); //한줄단위로만 대입 가능하므로↑↑

 

//입력후 텍스트 필드 값 제거

tfName.setText("");

tfAge.setText("");

rb3.setSelected(true); //라디오 초기화

 

//어레이 리스트에 멤버 객체 추가

String name = rows[0];

int age = Integer.parseInt(rows[1]);

String gender = rows[2];

members.add(new MemberVO(name, age, gender));

System.out.println("회원 숫자:" + members.size());

}

});

//선택한 줄 지우기

btnDel.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

//선택한 줄(row)의 번호 알아내기

int rowIndex = table.getSelectedRow();

//선택 안하고 누를 경우 리턴값 -1

if(rowIndex == -1) return;

model.removeRow(rowIndex);

 

members.remove(rowIndex); //데이터 지우기

System.out.println("회원 숫자:" + members.size());

}

});

 

add(bottomPanel,BorderLayout.SOUTH);

setVisible(true);

}

class MemberVO { //회원 1명 정보 저장하는 클래스 : 오로지 데이터 저장용

private String name;  //VO클래스

private int age;

private String gender;

public MemberVO(String name, int age, String gender) {

this.name = name;

this.age = age;

this.gender = gender;

}

}

 

public static void main(String[] args) {

new TableTest2();

}

}

 

 

반응형

Java : GUI, 메뉴 만들기

Java Programming|2018. 11. 21. 13:57
반응형

 메뉴 아이콘, 서브메뉴, 체크, 라디오버튼 만드는 자바 코드입니다.


결과창입니다.



import java.awt.BorderLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.KeyEvent;


import javax.swing.ImageIcon;

import javax.swing.JCheckBoxMenuItem;

import javax.swing.JFrame;

import javax.swing.JMenu;

import javax.swing.JMenuBar;

import javax.swing.JMenuItem;

import javax.swing.JRadioButtonMenuItem;

import javax.swing.JTextField;


public class ManuBarTest extends JFrame {

JTextField tf;

public ManuBarTest() {

JMenuBar menuBar = new JMenuBar(); //메뉴바 생성

JMenu menu1 = new JMenu("File"); //메뉴 생성

JMenu menu2 = new JMenu("Edit");

menuBar.add(menu1);

menuBar.add(menu2);

JMenuItem menuItem = null; //서브메뉴

//메뉴1("File")의 서브메뉴 생성 및 추가, 메뉴선택 리스너

menuItem = new JMenuItem("New");

menuItem.addActionListener(menuItemListener);

menuItem.setToolTipText("새로만들기를 합니다.");

menu1.add(menuItem);

//단축키 지정

menuItem = new JMenuItem("Open",KeyEvent.VK_O); //O밑에 밑줄 및 키이벤트 등록

menuItem.addActionListener(menuItemListener);

menu1.add(menuItem);

menuItem = new JMenuItem("Save");

menuItem.setIcon(new ImageIcon("images/edit.png"));//아이콘 16x16

menuItem.addActionListener(menuItemListener);

menu1.add(menuItem);

//서브메뉴

JMenu subMenu = new JMenu("sub menu");

menuItem = new JMenuItem("sub1");

menuItem.addActionListener(menuItemListener);

subMenu.add(menuItem);

menuItem = new JMenuItem("sub2");

menuItem.addActionListener(menuItemListener);

subMenu.add(menuItem);

menu1.add(subMenu);

//Menu2("Edit")의 서브메뉴 만들기

JCheckBoxMenuItem checkBoxMenuItem = new JCheckBoxMenuItem("Ruler");

checkBoxMenuItem.addActionListener(menuItemListener);

checkBoxMenuItem.setToolTipText("눈금자를 보이게함");//툴팁

menu2.add(checkBoxMenuItem);

menu2.addSeparator();//구분선

//라디오 버튼

JRadioButtonMenuItem radioButtonMenuItem = new JRadioButtonMenuItem("Ediable");

radioButtonMenuItem.addActionListener(menuItemListener);

menu2.add(radioButtonMenuItem);

//JFrame에 메뉴바 설정

setJMenuBar(menuBar);

//메뉴 선택시의 결과 출력용 JTextField

tf = new JTextField();

tf.setToolTipText("선택한 결과가 출력됩니다.");

add(tf,BorderLayout.SOUTH);

setDefaultCloseOperation(EXIT_ON_CLOSE);

setBounds(200,300,300,200);

setAlwaysOnTop(true);

setTitle("Menu Test");

setVisible(true);

}

ActionListener menuItemListener = new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

tf.setText(e.getActionCommand()+"를 선택함.");

}

};


public static void main(String[] args) {

new ManuBarTest();


}


}


반응형

Java : GUI, 리스트뷰(List View), 클릭한 이미지만 보이게 하기

Java Programming|2018. 11. 21. 10:05
반응형

결과화면 



클릭하면 한개 그림만 보입니다.



import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.GridLayout;

import java.awt.Image;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;


import javax.swing.ImageIcon;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JList;

import javax.swing.JPanel;

import javax.swing.event.ListSelectionEvent;

import javax.swing.event.ListSelectionListener;


public class ListTest extends JFrame{

//리스트에 보여질 항목들

String[] datas = new String[] 

{"Char1","Char2","Char3","Char4","Char5","Char6"};

JList<String> list = new JList<String>(); //명시적 초기화

public ListTest() {

list.setListData(datas);  //리스트 객체의 설정과 항목들 설정

list.setSelectionBackground(Color.YELLOW);

list.setSelectionForeground(Color.RED);

add(list,BorderLayout.WEST);

//가운데 이미지 배치 영역

JPanel panel = new JPanel();

panel.setLayout(new GridLayout(3, 2, 5, 5)); //row,col,hgap,vgap

JLabel[] imgLabels = new JLabel[6]; //배열 객체 생성

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

//이미지 아이콘 객체 생성

ImageIcon icon = new ImageIcon("images/ms1" + (i + 2) + ".png");

icon = new ImageIcon( icon.getImage()

.getScaledInstance(64, 64, Image.SCALE_SMOOTH));//Resizing

imgLabels[i] = new JLabel(icon); // 만들때 icon 넣을 수 있음

panel.add(imgLabels[i]); //만들며 붙이기

}

add(panel, BorderLayout.CENTER);

//리스트의 항목을 선택하는 것을 듣는 리스터 객체 생성 및 추가

list.addListSelectionListener(new ListSelectionListener() {

@Override //리스트의 항목 선택시 자동 실행되는 메소드 : 콜백메소드

public void valueChanged(ListSelectionEvent e) {

//리스트에게 선택된 항목의 인덱스번호 얻어오기

int index = list.getSelectedIndex();

for(JLabel t : imgLabels) t.setVisible(false);

imgLabels[index].setVisible(true);

}

});

JButton btn = new JButton("START");

add(btn,BorderLayout.NORTH);

btn.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

for(JLabel t : imgLabels) t.setVisible(false);

}

});

setTitle("List Test");

setLocation(600, 100);

setDefaultCloseOperation(EXIT_ON_CLOSE);

setSize(300, 300);

setVisible(true);

}

public static void main(String[] args) {

new ListTest();

}

}



반응형