public class SwingRadioCheck_01 extends JFrame implements ActionListener {
Container cp;
JRadioButton rb []=new JRadioButton[4]; //하나만 버튼을 선택하고 싶을때
JCheckBox cb[]=new JCheckBox[4];
JLabel lblMessage; //라디오버튼, 체크박스 결과값 출력
JPanel pTop,pBottom; //라디오버튼, 체크박스 올릴 패널
Color colors[]= {Color.red,Color.pink,Color.blue,Color.green};
public SwingRadioCheck_01(String title) {
super(title);
cp=this.getContentPane();
this.setBounds(200, 100, 600, 500);
cp.setBackground(new Color(255,255,200));
setDesign();
setVisible(true);
}
public void setDesign()
{
//상단패널에 보더로 감싼 4개의 radio버튼 만들기
String str1[]= {"빨강","핑크","파랑","초록"};
pTop=new JPanel();
pTop.setBorder(new TitledBorder("글자색"));
this.add("North",pTop);
//라디오버튼 하나만 선택되도록 그룹을 지어줌
ButtonGroup bg=new ButtonGroup();
for(int i=0;i<rb.length;i++)
{
rb[i]=new JRadioButton(str1[i],i==2?true:false); //라디오버튼 생성 //index2번에 체크하겠다
rb[i].addActionListener(this); //라디오버튼에 액션추가
pTop.add(rb[i]); //4개의 버튼을 각각 탑 패널에 추가
bg.add(rb[i]); //안해주면 다중선택 //버튼그룹에 추가
}
ImageIcon icon=new ImageIcon("/Users/sunghyunchoi/Desktop/sist0615/Swingimage/logoImg/a04.png");
lblMessage=new JLabel("Have a nice day",icon,JLabel.CENTER); //출력 및 계산나오는 곳
lblMessage.setHorizontalTextPosition(JLabel.LEFT);
lblMessage.setBorder(new LineBorder(Color.magenta,2)); //라인굵기
this.add("Center",lblMessage);
//하단패널에 보더로 감싼 4개의 checkbox버튼 만들기
pBottom=new JPanel();
pBottom.setBorder(new TitledBorder("가능언어"));
this.add("South",pBottom);
String str2[]= {"독일어","영어","한국어","JAVA"};
for(int i=0;i<cb.length;i++)
{
cb[i]=new JCheckBox(str2[i]);
pBottom.add(cb[i]);
cb[i].addActionListener(this);
}
}
//이벤트
@Override
public void actionPerformed(ActionEvent e) {
Object ob=e.getSource();
//라디오버튼 호출처리,메세지를 컬러별로 출력
for(int i=0;i<rb.length;i++)
{
if(ob==rb[i])
{
lblMessage.setForeground(colors[i]);
lblMessage.setFont(new Font("", Font.BOLD, 20)); //글자체 글자스타일 폰트크기
}
}
//체크박스 기본 로직
//증가 값이기 때문에 for문 밖에서
//체크박스 호출처리...선택한 체크를 라벨메세지별 출력
String lang="나의 가능 언어는 ";
for(int i=0;i<cb.length;i++)
{
if(cb[i].isSelected())//boolean으로 안하면 체크 후 해제했을때 글자가 안없어
{
lang+=cb[i].getText()+" ";
}
}
lblMessage.setText(lang);
//ob냐 cb냐 비교할때 사용
//클래스 타입비교
if(ob instanceof JCheckBox)
lblMessage.setText(lang);
else if(ob instanceof JRadioButton)
lblMessage.setText("Have a Nice Day");
}
public static void main(String[] args) {
new SwingRadioCheck_01("라디오 체크 연습");
}
}
swing JTable
public class SwingJTable_02 extends JFrame {
Container cp;
JTable table;
JLabel lblTitle;
JLabel lblOut; //출력
public SwingJTable_02(String title) {
super(title);
cp=this.getContentPane();
this.setBounds(200, 100, 600, 500);
cp.setBackground(new Color(255,255,200));
setDesign();
setVisible(true);
}
public void setDesign()
{
String data[][]= {{"김영준","서울","010-1234-1234"},
{"최성현","경기","010-1111-2222"},
{"장미란","인천","010-525-36363"},
{"박세리","제주","010-3255-3263"}};
String title[]= {"이름","주소","연락처"};
lblTitle=new JLabel("JTable연습",JLabel.CENTER);
lblOut=new JLabel("결과출력....",JLabel.CENTER);
table=new JTable(data, title);
JScrollPane pane=new JScrollPane(table); //생성한 테이블 넣기
//테이블에 마우스 이벤트 추가하기 위해서 밑에 클래스 생성후 상속 받아서 작성
table.addMouseListener(new TableEvent());
this.add("North",lblTitle);
this.add("Center",pane);
this.add("South",lblOut);
}
//상속받기 위해서 생성
//테이블클릭시 발생하는 마우스이벤트
class TableEvent extends MouseAdapter{
@Override
public void mouseClicked(MouseEvent e) {
super.mouseClicked(e);
//System.out.println("테이블 클릭!!!"); 마우스 먹는지 확인용
//선택한 행번호 얻기
int rowNum=table.getSelectedRow();
String str="이름: "+table.getValueAt(rowNum, 0)
+",주소: "+table.getValueAt(rowNum, 1)
+", 연락처: "+table.getValueAt(rowNum, 2);
lblOut.setText(str); //swing화면 아래 결과값 출력
}
}
public static void main(String[] args) {
new SwingJTable_02("스윙 테이블 연습");
}
}
swing 응용
public class SwingTableShop_03 extends JFrame implements ActionListener {
Container cp;
JTextField tfSang,tfSu,tfDan;
JButton btnAdd;
JTable table;
DefaultTableModel model;
//저장하고 불러올 파일명
String FILENAME="/Users/sunghyunchoi/Desktop/sist0615/file/fruit.txt";
public SwingTableShop_03(String title) {
super(title);
cp=this.getContentPane();
this.setBounds(200, 100, 400, 400);
cp.setBackground(new Color(255,255,200));
//디자인
setDesign();
//테이블데이터
tableData();
setVisible(true);
}
//디자인
public void setDesign()
{
this.setLayout(null);
JLabel lbl1=new JLabel("상품명");
JLabel lbl2=new JLabel("수량");
JLabel lbl3=new JLabel("단가");
lbl1.setBounds(30, 20, 80, 30);
this.add(lbl1);
lbl2.setBounds(130, 20, 80, 30);
this.add(lbl2);
lbl3.setBounds(230, 20, 80, 30);
this.add(lbl3);
tfSang=new JTextField();
tfSang.setBounds(20, 60, 100, 30);
this.add(tfSang);
tfSu=new JTextField();
tfSu.setBounds(120, 60, 100, 30);
this.add(tfSu);
tfDan=new JTextField();
tfDan.setBounds(220, 60, 100, 30);
this.add(tfDan);
//버튼
btnAdd=new JButton("추가하기");
btnAdd.setBounds(100, 120, 100, 30);
this.add(btnAdd);
//버튼에 이벤트
btnAdd.addActionListener(this);
//테이블 생성
String title[]= {"상품명","수량","가격","총금액"};
model=new DefaultTableModel(title, 0); //0은 행 갯수
table=new JTable(model);
JScrollPane js=new JScrollPane(table);
js.setBounds(20, 160, 350, 160);
this.add(js);
//테이블 클릭시 선택한 행번호를 selectRow에 저장
table.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
super.mouseClicked(e);
int selectRow=table.getSelectedRow();//행번호저장
}
});
}
//처음생성시 테이블에 불러올 메서드
public void tableData()
{
FileReader fr=null;
BufferedReader br=null;
try {
fr=new FileReader(FILENAME);
br=new BufferedReader(fr);
while(true)
{
String s=br.readLine();
if(s==null)
break;
String data[]=s.split(",");
//table에 배열형 데이터 추가
model.addRow(data);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO: handle exception
}
}
public static void main(String[] args) {
new SwingTableShop_03("상품테이블");
}
@Override
public void actionPerformed(ActionEvent e) {
Object ob=e.getSource();
if(ob==btnAdd)
{
String sang=tfSang.getText().trim();
String su=tfSu.getText().trim();
String dan=tfDan.getText().trim();
if(sang.length()==0 || su.length()==0 || dan.length()==0)
{
JOptionPane.showMessageDialog(this, "3개의 값을 모두 입력해주세요");
return; //메서드 끝내고 다시 시작하게 해주는 것
}
int total=0;
total=Integer.parseInt(su)*Integer.parseInt(dan);
NumberFormat nf=NumberFormat.getInstance(); //숫자를 문자로 인식
Vector<String> data=new Vector<String>();
data.add(sang);
data.add(su);
data.add(dan);
data.add(nf.format(total));
//테이블에 추가
model.addRow(data);
//입력값 지워주기 /값 입력후 추가하기 버튼 누르면 값 자동으로 지워주기
tfSang.setText("");
tfSu.setText("");
tfDan.setText("");
}
}
}