Java swing, awt GUI 간단한 학생, 교수 관리 프로그램



실행결과

package project1012;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.lang.reflect.Array;
import java.util.ArrayList;

import javax.swing.Action;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.JWindow;
import javax.swing.WindowConstants;
import javax.swing.table.DefaultTableModel;

public class Problem_Swing {

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

}

class Test extends JFrame implements ActionListener {
JButton btn1 = null;
JButton btn2 = null;
JButton btn3 = null;
JButton btn4 = null;
JButton btn5 = null;
JTable table = null;

public Test() {
super("문제");
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
this.setBounds(200, 200, 500, 500);
this.setLayout(new FlowLayout());

JPanel panelComboBox = new JPanel();
JPanel panelList = new JPanel();
JPanel panelTable = new JPanel();
JPanel panelNormal = new JPanel();

panelComboBox.setLayout(new FlowLayout());
panelList.setLayout(new FlowLayout());
panelTable.setLayout(new FlowLayout());
panelNormal.setLayout(new FlowLayout());

// panelTable
String title[] = new String[3];
title[0] = "학생 이름";
title[1] = "학생 성별";
title[2] = "학생 나이";
String data[][] = new String[0][0];
// data[0][0] ="1";
// data[0][1] ="남동길";
// data[0][2] ="27";
//
// data[1][0] ="2";
// data[1][1] ="이효림";
// data[1][2] ="23";

table = new JTable(data, title);
JScrollPane sp = new JScrollPane(table);
sp.setPreferredSize(new Dimension(300, 200));

panelTable.add(sp);

// panelNormal
btn1 = new JButton("학생 등록");
btn1.addActionListener(this);
panelNormal.add(btn1);

btn2 = new JButton("학생 삭제");
btn2.addActionListener(this);
panelNormal.add(btn2);

btn3 = new JButton("학생 출력");
btn3.addActionListener(this);
panelNormal.add(btn3);

btn4 = new JButton("교수 등록");
btn4.addActionListener(this);
panelNormal.add(btn4);

btn5 = new JButton("교수  출력");
btn5.addActionListener(this);
panelNormal.add(btn5);

// 패널 연결
this.add(panelComboBox);
this.add(panelList);
this.add(panelTable);
this.add(panelNormal);

this.setVisible(true);
}

public void refreshTable() {
String titleTemp[] = new String[3];
titleTemp[0] = "학생 이름";
titleTemp[1] = "학생 성별";
titleTemp[2] = "학생 나이";

int size = StuManager.list.size();
String[][] dataStudentArray = new String[size][3];

for (int i = 0; i < size; i++) {
Stu dataStudent = StuManager.list.get(i);

dataStudentArray[i][0] = dataStudent.name;
dataStudentArray[i][1] = dataStudent.sex;
dataStudentArray[i][2] = dataStudent.age;
}

table.setModel(new DefaultTableModel(dataStudentArray, titleTemp));
}

@Override
public void actionPerformed(ActionEvent e) {

if (e.getSource() == btn1) {
new InputStud();
}
if (e.getSource() == btn2) {
if (table.getSelectedRow() == -1) {
} else {
int deleteIndex = table.getSelectedRow();

StuManager.list.remove(deleteIndex);
this.refreshTable();
}
}
if (e.getSource() == btn3) {
String titleTemp[] = new String[3];
titleTemp[0] = "학생 이름";
titleTemp[1] = "학생 성별";
titleTemp[2] = "학생 나이";

int size = StuManager.list.size();
String[][] dataStudentArray = new String[size][3];

for (int i = 0; i < size; i++) {
Stu dataStudent = StuManager.list.get(i);

dataStudentArray[i][0] = dataStudent.name;
dataStudentArray[i][1] = dataStudent.sex;
dataStudentArray[i][2] = dataStudent.age;
}

table.setModel(new DefaultTableModel(dataStudentArray, titleTemp));
}
if (e.getSource() == btn4) {
new InputPro();
}
if (e.getSource() == btn5) {
new ProPrint();
}
}

}
class ProPrint extends JFrame implements ActionListener {
JButton btn1 = null;
JButton btn2 = null;
JTable table = null;
JTable table2 = null;

ArrayList<Stu> temp_list;
public ProPrint() {
super("문제");
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
this.setBounds(200, 200, 500, 600);
this.setLayout(new FlowLayout());

JPanel panelPrint = new JPanel();
JPanel panelButton = new JPanel();
JPanel panelRelated = new JPanel();

panelPrint.setLayout(new FlowLayout());
panelButton.setLayout(new FlowLayout());
panelRelated.setLayout(new FlowLayout());

String title[] = new String[3];
title[0] = "이름";
title[1] = "성별";
title[2] = "나이";



int size = ProManager.list.size();
String[][] dataProArray = new String[size][3];

for (int i = 0; i < size; i++) {
Pro dataPro = ProManager.list.get(i);

dataProArray[i][0] = dataPro.name;
dataProArray[i][1] = dataPro.sex;
dataProArray[i][2] = dataPro.age;
}


table = new JTable(dataProArray, title);
JScrollPane sp = new JScrollPane(table);
sp.setPreferredSize(new Dimension(300, 200));
panelPrint.add(sp);

btn1 = new JButton("관련 학생 정보 출력");
btn1.addActionListener(this);
panelButton.add(btn1);

btn2 = new JButton("확인");
btn2.addActionListener(this);
panelButton.add(btn2);


String data[][] = new String[0][0];
table2 = new JTable(data,title);
JScrollPane sp2 = new JScrollPane(table2);
sp2.setPreferredSize(new Dimension(300, 200));
panelRelated.add(sp2);

this.add(panelPrint);
this.add(panelButton);
this.add(panelRelated);
this.setVisible(true);
}

public void refreshTable(){
String titleTemp[] = new String[3];
titleTemp[0] = "이름";
titleTemp[1] = "성별";
titleTemp[2] = "나이";
int size = temp_list.size();
String[][] dataStudentArray = new String[size][3];

for (int i = 0; i < size; i++) {
Stu dataStudent = temp_list.get(i);

dataStudentArray[i][0] = dataStudent.name;
dataStudentArray[i][1] = dataStudent.sex;
dataStudentArray[i][2] = dataStudent.age;
}

table2.setModel(new DefaultTableModel(dataStudentArray, titleTemp));
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==btn1){
if (table.getSelectedRow() == -1) {
} else {
int deleteIndex = table.getSelectedRow();
Pro temp = ProManager.list.get(deleteIndex);
temp_list = new ArrayList<Stu>();
for(Stu s : StuManager.list){
if(s.professor.equals(temp.name)){
temp_list.add(s);
}
}


this.refreshTable();
}
}
if(e.getSource()==btn2){
dispose();
}

}
}

class InputStud extends JFrame implements ActionListener {

JLabel name, age, professor;
JTextField name_t, age_t;
JRadioButton male, female;
JComboBox professor_combo;
JButton btn1, btn2;
ButtonGroup group;

public InputStud() {
super("학생 입력");
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
this.setBounds(200, 200, 250, 300);
this.setLayout(new FlowLayout());

JPanel panelName = new JPanel();
JPanel panelRadio = new JPanel();
JPanel panelAge = new JPanel();
JPanel panelCombo = new JPanel();
JPanel panelButton = new JPanel();

panelName.setLayout(new FlowLayout());
panelRadio.setLayout(new FlowLayout());
panelAge.setLayout(new FlowLayout());
panelCombo.setLayout(new FlowLayout());
panelButton.setLayout(new FlowLayout());

name = new JLabel("이름 : ");
age = new JLabel("나이 : ");
professor = new JLabel("교수 : ");
name_t = new JTextField(10);
age_t = new JTextField(10);
professor_combo = new JComboBox();
male = new JRadioButton("남자", false);
female = new JRadioButton("여자", false);
btn1 = new JButton("확인");
btn2 = new JButton("취소");
btn1.addActionListener(this);
btn2.addActionListener(this);
group = new ButtonGroup();
group.add(male);
group.add(female);

for (Pro p : ProManager.list) {
professor_combo.addItem(p.name);
}

panelName.add(name);
panelName.add(name_t);

panelRadio.add(male);
panelRadio.add(female);

panelAge.add(age);
panelAge.add(age_t);

panelCombo.add(professor);
panelCombo.add(professor_combo);

panelButton.add(btn1);
panelButton.add(btn2);

this.add(panelName);
this.add(panelRadio);
this.add(panelAge);
this.add(panelCombo);
this.add(panelButton, BorderLayout.SOUTH);

this.setVisible(true);
}

@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == btn1) {
String str = (String) professor_combo.getSelectedItem();
int selectedIndex = professor_combo.getSelectedIndex();
String sex = "";
if (male.isSelected()) {
sex = male.getText().toString();
} else {
sex = female.getText().toString();
}
Stu s = new Stu(name_t.getText().toString().trim(), sex, age_t.getText().toString().trim(),str);
StuManager.list.add(s);
male.setSelected(false);
female.setSelected(false);
name_t.setText(null);
age_t.setText(null);

}
if (e.getSource() == btn2) {
dispose();
}
}

}

class InputPro extends JFrame implements ActionListener {
JLabel name, age, subject_l;
JTextField name_t, age_t;
JRadioButton male, female;
JComboBox subject;
JButton btn1, btn2;
ButtonGroup group;

public InputPro() {
super("교수 입력");

this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
this.setBounds(200, 200, 250, 300);
this.setLayout(new FlowLayout());

JPanel panelName = new JPanel();
JPanel panelRadio = new JPanel();
JPanel panelAge = new JPanel();
JPanel panelCombo = new JPanel();
JPanel panelButton = new JPanel();

panelName.setLayout(new FlowLayout());
panelRadio.setLayout(new FlowLayout());
panelAge.setLayout(new FlowLayout());
panelCombo.setLayout(new FlowLayout());
panelButton.setLayout(new FlowLayout());

name = new JLabel("이름 : ");
age = new JLabel("나이 : ");
subject_l = new JLabel("과목 : ");
name_t = new JTextField(10);
age_t = new JTextField(10);
subject = new JComboBox();
male = new JRadioButton("남자", false);
female = new JRadioButton("여자", false);
btn1 = new JButton("확인");
btn2 = new JButton("취소");
btn1.addActionListener(this);
btn2.addActionListener(this);
group = new ButtonGroup();
group.add(male);
group.add(female);
subject.addItem("Java");
subject.addItem("Html");
subject.addItem("Jsp");
subject.addItem("Oracle");

panelName.add(name);
panelName.add(name_t);

panelRadio.add(male);
panelRadio.add(female);

panelAge.add(age);
panelAge.add(age_t);

panelCombo.add(subject_l);
panelCombo.add(subject);

panelButton.add(btn1);
panelButton.add(btn2);

this.add(panelName);
this.add(panelRadio);
this.add(panelAge);
this.add(panelCombo);
this.add(panelButton, BorderLayout.SOUTH);

this.setVisible(true);

}

@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == btn1) {
String str = (String) subject.getSelectedItem();
int selectedIndex = subject.getSelectedIndex();
String sex = "";
if (male.isSelected()) {
sex = male.getText().toString();
} else {
sex = female.getText().toString();
}
Pro p = new Pro(name_t.getText().toString().trim(), sex, age_t.getText().toString().trim(), str);
ProManager.list.add(p);
male.setSelected(false);
female.setSelected(false);
name_t.setText(null);
age_t.setText(null);

}
if (e.getSource() == btn2) {
dispose();
}
}

}

class Stu {
String name;
String sex;
String age;
String professor;

public Stu(String name, String sex, String age,String professor) {
this.name = name;
this.sex = sex;
this.age = age;
this.professor = professor;
}
}

class StuManager {
public static ArrayList<Stu> list = new ArrayList<Stu>();
}

class Pro {
String name;
String sex;
String age;
String subject;

// ArrayList<Stu> s = new ArrayList<Stu>();

public Pro(String name, String sex, String age, String subject) {
this.name = name;
this.sex = sex;
this.age = age;
this.subject = subject;
}
}

class ProManager {
public static ArrayList<Pro> list = new ArrayList<Pro>();
}

댓글

이 블로그의 인기 게시물

About Kafka Basic

About JVM Warm up

About ZGC

Spring Boot Actuator readiness, liveness probes on k8s

About G1 GC

sneak peek jitpack

About idempotent

C 언어 구조체의 포인터 멤버 변수

Synology NAS에 MariaDB 10에 Mysql workbench로 원격접속하기

About Websocket minimize data size and data transfer cost on cloud