본문으로 바로가기

[GUI]2

category Language/자바 2021. 1. 14. 11:21
728x90
반응형
SMALL

SpringLayout: 틀에 제한받지않고 레이아웃 구현>>스프링을 프레임에 적용시킨뒤

스프링이 적용된것을 확인할수있음

jpanel로 경계면을 지정

요기까지

소스상에서 추가됨을 확인할수있음

jpanel 1개 더 추가

 

 

 

 

 

 

코드상에서 추가하고 실행하면

 

짜잔!

해당 테이블 마우스로 누른다음

코드에서 생성됨을 확인

테이블을 클릭했을대의 위치값을 출력

스트링 문에서 위치값을 get해와서 스트링 형식으로 출력해주면 테이블안의 데이터 값이 온전히 나온다.

 

속성창 가서 row col 수정

 

요런식으로 버튼또한 똑같이 해서

입력하고 추가 버튼을 입력했을때 추가되는 기능이 필요하다 추가 버튼에 마우스 클릭 이벤트 생성뒤 코드로 가보자.

UI상에서 추가한 정보가 콘솔창에 출력되고있음을 확인할수있다. 이제  추가되거나 삭제되는 데이터들이 UI상에 나타나야되기 때문에

	private DefaultTableModel model; // JTable의 데이터를 GUI에서 데이터를 추가하거나 삭제하는 기능

선언 해준뒤에

//Jtable 데이터초기화
		//컬럼명은 1차원 배열, 행 데이터는 2차원 배열로 구성
		String[] colNames= {"이름","java","iot","web"};
		String[][] rowDatas= {
				{"윤주영","80","65","72"},
				{"채평성","97","55","76"},
				{"김경태","95","50","98"}
				
				
		};
		
		model=new DefaultTableModel(rowDatas,colNames); /
		
		table=new JTable(model);
        
        //model객체를 통해서 변경작업을 하려면 현재 JTable의 정보를 초기화해줘야 한다.
		model=(DefaultTableModel)table.getModel();

아래 3줄 추가

	String[] rowData= {name,java,iot,web};
				model.addRow(rowData);

다시 추가 뒤 확인하면

 

 

package GUI;

import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import javax.swing.SpringLayout;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.GridLayout;
import javax.swing.JTextField;
import javax.swing.JButton;

public class ex01_jtable {

   private JFrame frame;
   private JTable table;
   private JTextField txt_name;
   private JTextField txt_java;
   private JTextField txt_iot;
   private JTextField txt_web;
   private JButton addBtn;
   private JButton removeBtn;
   private DefaultTableModel model; //JTable의 데이터를 추가하거나 삭제할 때
   private int row; //선택한 행의 위치

int row  선언뒤

int row 를 전타입으로 선언했으니 클릭안쪽에 있는 지역타입은 필요없으므로 int를 지워준다.

   removeBtn = new JButton("\uC0AD\uC81C");
      removeBtn.addMouseListener(new MouseAdapter() {
      	@Override
      	public void mouseClicked(MouseEvent e) {
      		model.removeRow(row);
      		System.out.println("선택한 해잉 삭제되었습니다.");
      		
      	}

 

 

풀코드

package GUI;

import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import javax.swing.SpringLayout;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.GridLayout;
import javax.swing.JTextField;
import javax.swing.JButton;

public class ex01_jtable {

   private JFrame frame;
   private JTable table;
   private JTextField txt_name;
   private JTextField txt_java;
   private JTextField txt_iot;
   private JTextField txt_web;
   private JButton addBtn;
   private JButton removeBtn;
   private DefaultTableModel model; //JTable의 데이터를 추가하거나 삭제할 때
   private int row; //선택한 행의 위치

   /**
    * Launch the application.
    */
   public static void main(String[] args) {
      EventQueue.invokeLater(new Runnable() {
         public void run() {
            try {
               ex01_jtable window = new ex01_jtable();
               window.frame.setVisible(true);
            } catch (Exception e) {
               e.printStackTrace();
            }
         }
      });
   }

   /**
    * Create the application.
    */
   public ex01_jtable() {
      initialize();
   }

   /**
    * Initialize the contents of the frame.
    */
   private void initialize() {
      frame = new JFrame();
      frame.setTitle("JTable 예제");
      frame.setBounds(100, 100, 650, 400); // (x축, y축, width, height)
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      SpringLayout springLayout = new SpringLayout();
      frame.getContentPane().setLayout(springLayout);
      
      JPanel panel = new JPanel();
      springLayout.putConstraint(SpringLayout.NORTH, panel, 10, SpringLayout.NORTH, frame.getContentPane());
      springLayout.putConstraint(SpringLayout.WEST, panel, 10, SpringLayout.WEST, frame.getContentPane());
      springLayout.putConstraint(SpringLayout.SOUTH, panel, 289, SpringLayout.NORTH, frame.getContentPane());
      springLayout.putConstraint(SpringLayout.EAST, panel, 624, SpringLayout.WEST, frame.getContentPane());
      frame.getContentPane().add(panel);
      
      JPanel panel_1 = new JPanel();
      springLayout.putConstraint(SpringLayout.NORTH, panel_1, 6, SpringLayout.SOUTH, panel);
      springLayout.putConstraint(SpringLayout.WEST, panel_1, 10, SpringLayout.WEST, frame.getContentPane());
      springLayout.putConstraint(SpringLayout.SOUTH, panel_1, 62, SpringLayout.SOUTH, panel);
      SpringLayout sl_panel = new SpringLayout();
      panel.setLayout(sl_panel);
      
      JScrollPane scrollPane = new JScrollPane();
      sl_panel.putConstraint(SpringLayout.NORTH, scrollPane, 10, SpringLayout.NORTH, panel);
      sl_panel.putConstraint(SpringLayout.WEST, scrollPane, 10, SpringLayout.WEST, panel);
      sl_panel.putConstraint(SpringLayout.SOUTH, scrollPane, 269, SpringLayout.NORTH, panel);
      sl_panel.putConstraint(SpringLayout.EAST, scrollPane, 604, SpringLayout.WEST, panel);
      panel.add(scrollPane);
      
      //JTable 데이터 초기화
      //컬럼명 1차원 배열, 행 데이터는 2차원 배열
      String[] colNames = {"이름","Java", "IOT", "Web"};
      String[][] rowDatas = {
            {"김경태","80","80","70"},
            {"김운비","70","60","70"},
            {"임명진","90","50","60"}
      };
      
      
      //model객체를 통해서 데이터 추가/수정/삭제 등이 가능
      model = new DefaultTableModel(rowDatas, colNames);
      
            table = new JTable(model);
            
            //model객체를 통해서 변경작업을 하려면 현재 JTable의 정보를 초기화해줘야 한다.
             model = (DefaultTableModel) table.getModel();
            
             table.addMouseListener(new MouseAdapter() {
               @Override
               public void mouseClicked(MouseEvent arg0) {
                  //마우스로 테이블을 클릭했을 때 실행할 로직을 작성
               row = table.getSelectedRow();
               int col = table.getSelectedColumn();
               String data = table.getValueAt(row, col).toString();
               
               
               System.out.println("선택한 항목의 위치>> " +row+ "," + col);
               System.out.println("선택한 항목>> "+data);
               }
            });
   
      
      scrollPane.setViewportView(table);
      springLayout.putConstraint(SpringLayout.EAST, panel_1, 624, SpringLayout.WEST, frame.getContentPane());
      frame.getContentPane().add(panel_1);
      panel_1.setLayout(new GridLayout(1, 6, 0, 0));
      
      txt_name = new JTextField();
      panel_1.add(txt_name);
      txt_name.setColumns(10);
      
      txt_java = new JTextField();
      panel_1.add(txt_java);
      txt_java.setColumns(10);
      
      txt_iot = new JTextField();
      panel_1.add(txt_iot);
      txt_iot.setColumns(10);
      
      txt_web = new JTextField();
      panel_1.add(txt_web);
      txt_web.setColumns(10);
      
      addBtn = new JButton("\uCD94\uAC00");
      addBtn.addMouseListener(new MouseAdapter() {
         @Override
         public void mouseClicked(MouseEvent e) {
            //추가버튼 클릭 시, JTable에 행 데이터 추가
            //-> 먼저 사용자가 입력한 4개의 정보를 가져오기
            String name = txt_name.getText();
            String java = txt_java.getText();
            String iot = txt_iot.getText();
            String web = txt_web.getText();
            
            System.out.println(name + "/" + java +"/" + iot+"/" + web);
            
            String[] rowData = {name, java, iot, web};
            model.addRow(rowData);
            
         }
      });
      panel_1.add(addBtn);
      
      
      removeBtn = new JButton("\uC0AD\uC81C");
      removeBtn.addMouseListener(new MouseAdapter() {
      	@Override
      	public void mouseClicked(MouseEvent e) {
      		model.removeRow(row);
      		System.out.println("선택한 해잉 삭제되었습니다.");
      		
      	}
      });
      panel_1.add(removeBtn);
   }
}
728x90
반응형
LIST

'Language > 자바' 카테고리의 다른 글

GUI DB갱신버튼 연동  (1) 2021.01.17
이클립스와 오라클의 새로운 계정 연동  (0) 2021.01.16
[GUI]  (0) 2021.01.12
[JDBC]JDBC 회원정보시스템 구현  (0) 2021.01.12
[자바]Interface(인터페이스)  (0) 2021.01.11