일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 프로그래머스
- Shared Lock
- 지연로딩
- 원시타입
- 변수와 메서드
- jsoup
- foreigen key
- git 기초
- 서버 스크립트
- null/not null
- 멱등성
- InterruptedException
- 컬렉션 프레임워크
- 참조타입
- 추상메서드
- 피연산자
- 오버로딩
- exclusive lock
- 메세지 큐
- Java
- SQL
- N+1
- bufferedInputStream
- 오버라이딩
- 변수와 상수
- 프로그래머스 코테
- 연산자와의 관계
- 즉시로딩
- delete
- select
- Today
- Total
[JAVA_Back-End]
[JAVA]GUI(5) - Layout 본문
JFrameEx01.java - Dialog 띄우기 |
import java.awt.BorderLayout; import java.awt.EventQueue; import java.awt.Rectangle; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.JButton; import javax.swing.JDialog; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; public class JFrameEx01 extends JFrame { private JPanel contentPane; private JButton btn01; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { JFrameEx01 frame = new JFrameEx01(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public JFrameEx01() { setResizable(false); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 600, 800); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); btn01 = new JButton("New button"); btn01.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { JDialogEx01 dialog = new JDialogEx01(); dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); System.out.println("1"); // JDialog를 JFrame 내에 정중앙에 오게 배치 // Frame 의 크기 / 위치이기 때문에 속성을 사각형으로 준다 Rectangle frameBounds = JFrameEx01.this.getBounds(); int fx = (int)frameBounds.getX(); int fy = (int)frameBounds.getY(); int fwidth = (int)frameBounds.getWidth(); int fheight = (int)frameBounds.getHeight(); // Dialog의 크기 int dwidht = 450; int dheight = 300; // Dialog의 크기 / 위치 설정 dialog.setBounds(fwidth/2 - dwidht/2 + fx, fheight/2 - dheight/2 + fy, dwidht,dheight ); // 현재 상태에서 button 클릭시 dialog가 무한으로 열리는 현상을 확인할수 있다. // 하단의 dialog.setModal(true); 옵션을 추가하여 // Dialog 에서 벗어나지 못하게 설정할 수 있다. ( Modal = 제어권 설정 ) dialog.setModal(true); System.out.println("2"); // setVisible 에서 정지되어있는 상태이기 때문에 // 출력구문 3은 Dialog가 종료된 이후에 출력이 된다. dialog.setVisible(true); System.out.println("3"); } }); btn01.setBounds(12, 10, 97, 23); contentPane.add(btn01); } } |
JFrameEx02.java - Dialog에 입력한 내용을 본 Frame에 적용하기 |
import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JTextField; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; public class JFrameEx02 extends JFrame { private JPanel contentPane; private JButton btn01; private JTextField txt01; private JTextField txt02; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { JFrameEx02 frame = new JFrameEx02(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public JFrameEx02() { setResizable(false); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 600, 800); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); btn01 = new JButton("New button"); btn01.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { // Dialog 생성자를 통해 데이터를 넘겨주는 방법이 default 다 String data = txt01.getText(); JDialogEx02 dialog = new JDialogEx02( data ); dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); dialog.setModal(true); // setVisible 에서 정지되어있는 상태 dialog.setVisible(true); txt02.setText(dialog.getData()); } }); btn01.setBounds(12, 56, 97, 23); contentPane.add(btn01); txt01 = new JTextField(); txt01.setBounds(12, 25, 275, 21); contentPane.add(txt01); txt01.setColumns(10); txt02 = new JTextField(); txt02.setBounds(12, 89, 275, 21); contentPane.add(txt02); txt02.setColumns(10); } } |
JDialogEx01.java - Dialog출력하기 ( JFrameEx01과 연결) |
import java.awt.BorderLayout; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; public class JDialogEx01 extends JDialog { private final JPanel contentPanel = new JPanel(); /** * Launch the application. * Dialog 실행 부분 public static void main(String[] args) { try { JDialogEx01 dialog = new JDialogEx01(); dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); dialog.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } */ /** * Create the dialog. */ public JDialogEx01() { setBounds(200, 200, 450, 300); getContentPane().setLayout(new BorderLayout()); contentPanel.setLayout(new FlowLayout()); contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5)); getContentPane().add(contentPanel, BorderLayout.CENTER); //내용이 들어가는 panel을 설정하여 스크롤 가능한 내용을 볼 수 있도록 한다 { JPanel buttonPane = new JPanel(); buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT)); //버튼 오른쪽 배치 getContentPane().add(buttonPane, BorderLayout.SOUTH); { JButton okButton = new JButton("OK"); okButton.addActionListener(new ActionListener() { //OK를 눌렀을 때 액션 public void actionPerformed(ActionEvent e) { // action이 일어나는것에대한 대명사는 Enter를 눌렀을때라고 바라본다. => action을 사용하는 이유? JDialogEx01.this.dispose(); } }); okButton.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { //Enter을 눌렀을 때와 마우스로 눌렀을 때의 경우를 나누어 같은 처리를 할 수 있도록 한다. JDialogEx01.this.dispose(); } }); okButton.setActionCommand("OK"); buttonPane.add(okButton); getRootPane().setDefaultButton(okButton); } { JButton cancelButton = new JButton("Cancel"); cancelButton.setActionCommand("Cancel"); buttonPane.add(cancelButton); } } } } |
JDialogEx02.java - Dialog출력하기 ( JFrameEx02와 연결) |
import java.awt.BorderLayout; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.JTextField; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; public class JDialogEx02 extends JDialog { private final JPanel contentPanel = new JPanel(); private JTextField txt01; // Dialog에서 넘겨받을 매개변수 생성 또는 get 메서드 생성 // public String data; private String data; public String getData() { return data; } /** * Launch the application. public static void main(String[] args) { try { JDialogEx02 dialog = new JDialogEx02(); dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); dialog.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } */ /** * Create the dialog. */ public JDialogEx02(String data) { setBounds(100, 100, 450, 300); getContentPane().setLayout(new BorderLayout()); contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5)); getContentPane().add(contentPanel, BorderLayout.CENTER); contentPanel.setLayout(null); { txt01 = new JTextField(); txt01.setBounds(12, 10, 192, 21); contentPanel.add(txt01); txt01.setColumns(10); // JFrame에서 넘겨받은 데이터 삽입 txt01.setText(""); txt01.setText(data); } { JButton btn01 = new JButton("New button"); btn01.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { JDialogEx02.this.data = txt01.getText(); JDialogEx02.this.dispose(); } }); btn01.setBounds(107, 41, 97, 23); contentPanel.add(btn01); } { JPanel buttonPane = new JPanel(); buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT)); getContentPane().add(buttonPane, BorderLayout.SOUTH); { JButton okButton = new JButton("OK"); okButton.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { JDialogEx02.this.dispose(); } }); okButton.setActionCommand("OK"); buttonPane.add(okButton); getRootPane().setDefaultButton(okButton); } { JButton cancelButton = new JButton("Cancel"); cancelButton.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { JDialogEx02.this.dispose(); } }); cancelButton.setActionCommand("Cancel"); buttonPane.add(cancelButton); } } } } |
GugudanJFrame.java - Dialog를 사용해서 시작단과 끝단의 구구단 출력하기 |
import java.awt.EventQueue; import java.awt.Rectangle; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.JLabel; import javax.swing.JTextField; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.border.TitledBorder; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; public class GugudanJFrame extends JFrame { private JPanel contentPane; private JTextField textField; private JTextField textField_1; private JLabel lblNewLabel; private JLabel lblNewLabel_1; private JButton btnNewButton; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { GugudanJFrame frame = new GugudanJFrame(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public GugudanJFrame() { setResizable(false); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 600, 800); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); JPanel panel = new JPanel(); panel.setBorder(new TitledBorder(null, "\uAD6C\uAD6C\uB2E8", TitledBorder.LEADING, TitledBorder.TOP, null, null)); panel.setBounds(12, 10, 554, 106); contentPane.add(panel); panel.setLayout(null); lblNewLabel = new JLabel("시작 단"); lblNewLabel.setBounds(12, 37, 57, 15); panel.add(lblNewLabel); lblNewLabel_1 = new JLabel("끝 단"); lblNewLabel_1.setBounds(12, 62, 57, 15); panel.add(lblNewLabel_1); textField = new JTextField(); textField.setBounds(81, 34, 357, 21); panel.add(textField); textField.setColumns(10); textField_1 = new JTextField(); textField_1.setBounds(81, 59, 357, 21); panel.add(textField_1); textField_1.setColumns(10); btnNewButton = new JButton("출력"); btnNewButton.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { String data01 = textField.getText(); String data02 = textField_1.getText(); GugudanJDialog dialog = new GugudanJDialog(data01,data02); dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); Rectangle frameBounds = GugudanJFrame.this.getBounds(); int fx = (int)frameBounds.getX(); int fy = (int)frameBounds.getY(); int fwidth = (int)frameBounds.getWidth(); int fheight = (int)frameBounds.getHeight(); int dwidht = 450; int dheight = 300; dialog.setBounds(fwidth/2 - dwidht/2 + fx, fheight/2 - dheight/2 + fy, dwidht,dheight ); dialog.setModal(true); dialog.setVisible(true); } }); btnNewButton.setBounds(445, 33, 97, 44); panel.add(btnNewButton); } } |
GugudanJDialog.java - 구구단 출력 Dialog |
import java.awt.BorderLayout; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.JTextArea; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.JScrollPane; public class GugudanJDialog extends JDialog { private final JPanel contentPanel = new JPanel(); /** * Launch the application. public static void main(String[] args) { try { GugudanJDialog dialog = new GugudanJDialog(); dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); dialog.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } */ /** * Create the dialog. */ public GugudanJDialog(String data01,String data02) { setBounds(100, 100, 450, 300); getContentPane().setLayout(new BorderLayout()); contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5)); getContentPane().add(contentPanel, BorderLayout.CENTER); contentPanel.setLayout(null); { JScrollPane scrollPane = new JScrollPane(); scrollPane.setBounds(12, 10, 410, 208); contentPanel.add(scrollPane); JTextArea textArea = new JTextArea(); scrollPane.setViewportView(textArea); textArea.setText(""); int dan01 = Integer.parseInt(data01); int dan02 = Integer.parseInt(data02); for (int i=dan01; i<=dan02; i++) { textArea.append(i+"단"); textArea.append(System.lineSeparator()); for(int j=1; j<=9; j++) { textArea.append(i+"X"+j+"="+(i*j)); textArea.append(System.lineSeparator()); } } } { JPanel buttonPane = new JPanel(); buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT)); getContentPane().add(buttonPane, BorderLayout.SOUTH); { JButton cancelButton = new JButton("Cancel"); cancelButton.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { GugudanJDialog.this.dispose(); } }); cancelButton.setActionCommand("Cancel"); buttonPane.add(cancelButton); } } } } |
JFileChooserEx01.java - 파일 선택하기 |
import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.filechooser.FileNameExtensionFilter; import javax.swing.JButton; import javax.swing.JFileChooser; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class JFileChooserEx01 extends JFrame { private JPanel contentPane; private JButton btn2; private JButton btnNewButton; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { JFileChooserEx01 frame = new JFileChooserEx01(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public JFileChooserEx01() { setResizable(false); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 600, 800); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); btnNewButton = new JButton("New button"); btnNewButton.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { BufferedReader bis = null; // 열기가 나오면 openfileChooser ( 설정된 폴더가없으면 document 가 기본 으로나옴 ) JFileChooser fileChooser = new JFileChooser("c:\\"); FileNameExtensionFilter filter = new FileNameExtensionFilter("java Source", "java" ); fileChooser.setFileFilter(filter); int result = fileChooser.showOpenDialog(JFileChooserEx01.this); if ( result == JFileChooser.APPROVE_OPTION) { System.out.println("확인"); // 파일 경로 System.out.println(fileChooser.getSelectedFile().getName()); System.out.println(fileChooser.getSelectedFile().getAbsolutePath()); // 파일 내용을 읽는 방법은 I/O를 사용한다. try { bis = new BufferedReader(new FileReader(fileChooser.getSelectedFile())); String data = null; while((data = bis.readLine())!= null) { System.out.println(data); } } catch (FileNotFoundException e1) { e1.printStackTrace(); } catch (IOException e1) { e1.printStackTrace(); }finally { if( bis != null) try { bis.close();} catch(IOException e1) {} } }else if(result == JFileChooser.CANCEL_OPTION) { System.out.println("취소"); }else { System.out.println("기타"); } } }); btnNewButton.setBounds(12, 10, 97, 23); contentPane.add(btnNewButton); btn2 = new JButton("New button"); btn2.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { // 저장 기능 버튼 JFileChooser fileChooser = new JFileChooser(); // 파일을 선택해서 다른이름으로 저장 가능 fileChooser.showSaveDialog(JFileChooserEx01.this); } }); btn2.setBounds(12, 43, 97, 23); contentPane.add(btn2); } } |
JFileChooserEx02.java - 파일을 열고 다른이름으로 저장할 수 있는 프로그램 |
import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.filechooser.FileNameExtensionFilter; import javax.swing.JButton; import javax.swing.JFileChooser; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import javax.swing.JTextArea; import javax.swing.JScrollPane; public class JFileChooserEx02 extends JFrame { private JPanel contentPane; private JButton btn2; private JButton btnNewButton; private JScrollPane scrollPane; private JTextArea textArea; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { JFileChooserEx02 frame = new JFileChooserEx02(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public JFileChooserEx02() { setResizable(false); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 1000, 600); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); btnNewButton = new JButton("열기"); btnNewButton.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { BufferedReader bis = null; JFileChooser fileChooser = new JFileChooser("c:\\java\\javaStudy"); FileNameExtensionFilter filter = new FileNameExtensionFilter("java Source", "java" ); //java파일만 뜰 수 있도록 함 fileChooser.setFileFilter(filter); int result = fileChooser.showOpenDialog(JFileChooserEx02.this); if ( result == JFileChooser.APPROVE_OPTION) { System.out.println("확인"); try { bis = new BufferedReader(new FileReader(fileChooser.getSelectedFile())); String data = null; while((data = bis.readLine())!= null) { textArea.append(data); textArea.append(System.lineSeparator()); } } catch (FileNotFoundException e1) { e1.printStackTrace(); } catch (IOException e1) { e1.printStackTrace(); }finally { if( bis != null) try { bis.close();} catch(IOException e1) {} } }else if(result == JFileChooser.CANCEL_OPTION) { System.out.println("취소"); }else { System.out.println("기타"); } } }); btnNewButton.setBounds(12, 23, 97, 23); contentPane.add(btnNewButton); btn2 = new JButton("저장"); btn2.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { // 저장 기능 버튼 JFileChooser fileChooser = new JFileChooser(); int result = fileChooser.showSaveDialog(JFileChooserEx02.this); BufferedWriter bw = null; try { // 수빈아 버퍼로 받고 경로 지정 bw = new BufferedWriter(new FileWriter(fileChooser.getSelectedFile())); // 요거 한줄쓰면 그냥 개꿀딱으로 바로 저장해준다 bw.write(textArea.getText()); } catch (IOException e1) { e1.printStackTrace(); }finally { if (bw !=null) try {bw.close();}catch(IOException e1){} } } }); btn2.setBounds(121, 23, 97, 23); contentPane.add(btn2); scrollPane = new JScrollPane(); scrollPane.setBounds(12, 56, 938, 398); contentPane.add(scrollPane); textArea = new JTextArea(); scrollPane.setViewportView(textArea); } } |
JColorChooserEx01.java - 색변경 |
import java.awt.Color; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.JButton; import javax.swing.JColorChooser; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.JLabel; import javax.swing.JSlider; import java.awt.event.MouseMotionAdapter; public class JColorChoolserEx01 extends JFrame { private JPanel contentPane; private JButton btn; private JLabel lbl; private JSlider slider01; private JSlider slider02; private JSlider slider03; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { JColorChoolserEx01 frame = new JColorChoolserEx01(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public JColorChoolserEx01() { setResizable(false); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 600, 800); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); contentPane.setBackground(Color.GREEN); setContentPane(contentPane); contentPane.setLayout(null); lbl = new JLabel("글자색 변경하기"); lbl.setBackground(new Color(255, 0, 0)); lbl.setForeground(Color.LIGHT_GRAY); lbl.setBounds(12, 43, 242, 15); contentPane.add(lbl); slider01 = new JSlider(); //슬라이더를 통해 색을 변경한다 slider01.addMouseMotionListener(new MouseMotionAdapter() { @Override public void mouseDragged(MouseEvent e) { contentPane.setBackground(new Color(slider01.getValue(),slider02.getValue(),slider03.getValue())); } }); slider01.setValue(0); //값의 최소를 0 slider01.setMaximum(255); //값의 최대를 255로 설정 slider01.setBounds(12, 131, 200, 26); contentPane.add(slider01); slider02 = new JSlider(); slider02.addMouseMotionListener(new MouseMotionAdapter() { @Override public void mouseDragged(MouseEvent e) { contentPane.setBackground(new Color(slider01.getValue(),slider02.getValue(),slider03.getValue())); } }); slider02.setValue(0); slider02.setMaximum(255); slider02.setBounds(12, 167, 200, 26); contentPane.add(slider02); slider03 = new JSlider(); slider03.addMouseMotionListener(new MouseMotionAdapter() { @Override public void mouseDragged(MouseEvent e) { contentPane.setBackground(new Color(slider01.getValue(),slider02.getValue(),slider03.getValue())); } }); slider03.setValue(0); slider03.setMaximum(255); slider03.setBounds(12, 203, 200, 26); contentPane.add(slider03); btn = new JButton("New button"); btn.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { // 만들어져있는 Dialog임 // Color 는 Color 는 객체에서 가져온것 Color color = JColorChooser.showDialog(JColorChoolserEx01.this, "팔레트", Color.RED); //color에 대한 만들어져 있는 Dialog를 불러온다 // 취소를 누르면 null 익셉션 발생 // 이와같은 에러를 확인해줘야한다. if (color != null) { /*System.out.println(color.toString()); System.out.println(color.getRed()); System.out.println(color.getGreen()); System.out.println(color.getBlue());*/ lbl.setForeground(new Color(color.getRed(),color.getGreen(),color.getBlue())); //글자 색 변경하기 라벨에 설정한 색을 적용한다 }else { System.out.println("취소"); } } }); btn.setBounds(12, 10, 97, 23); contentPane.add(btn); } } |
+) RGBColor.java - 색의 RGB를 조절하기 |
import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.JTextArea; import java.awt.Color; import javax.swing.JSlider; import javax.swing.JLabel; import java.awt.event.MouseMotionAdapter; import java.awt.event.MouseEvent; import javax.swing.JButton; import javax.swing.JColorChooser; import java.awt.event.MouseAdapter; public class RGBColor extends JFrame { private JPanel contentPane; private JSlider slider01; private JSlider slider02; private JSlider slider03; private JLabel lblRed; private JLabel lblBlue; private JLabel lblGreen; private JLabel lblRed02; private JLabel lblGreen02; private JLabel lblBlue02; private JTextArea textArea; private JButton btnNewButton; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { RGBColor frame = new RGBColor(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public RGBColor() { setResizable(false); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 600, 300); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); textArea = new JTextArea(); textArea.setBackground(Color.RED); textArea.setBounds(12, 10, 560, 51); contentPane.add(textArea); slider01 = new JSlider(); slider01.addMouseMotionListener(new MouseMotionAdapter() { @Override public void mouseDragged(MouseEvent e) { textArea.setBackground(new Color(slider01.getValue(),slider02.getValue(),slider03.getValue())); lblRed02.setText(String.valueOf(slider01.getValue())); } }); slider01.setMaximum(255); slider01.setBounds(12, 93, 200, 26); contentPane.add(slider01); lblRed = new JLabel("RED"); lblRed.setBounds(12, 71, 57, 15); contentPane.add(lblRed); slider02 = new JSlider(); slider02.addMouseMotionListener(new MouseMotionAdapter() { @Override public void mouseDragged(MouseEvent e) { textArea.setBackground(new Color(slider01.getValue(),slider02.getValue(),slider03.getValue())); lblGreen02.setText(String.valueOf(slider02.getValue())); } }); slider02.setMaximum(255); slider02.setBounds(12, 150, 200, 26); contentPane.add(slider02); lblGreen = new JLabel("Green"); lblGreen.setBounds(12, 129, 57, 15); contentPane.add(lblGreen); slider03 = new JSlider(); slider03.addMouseMotionListener(new MouseMotionAdapter() { @Override public void mouseDragged(MouseEvent e) { textArea.setBackground(new Color(slider01.getValue(),slider02.getValue(),slider03.getValue())); lblBlue02.setText(String.valueOf(slider03.getValue())); } }); slider03.setMaximum(255); slider03.setBounds(12, 209, 200, 26); contentPane.add(slider03); lblBlue = new JLabel("Blue"); lblBlue.setBounds(12, 186, 57, 15); contentPane.add(lblBlue); lblRed02 = new JLabel(""); lblRed02.setBounds(234, 104, 57, 15); contentPane.add(lblRed02); lblGreen02 = new JLabel(""); lblGreen02.setBounds(234, 151, 57, 15); contentPane.add(lblGreen02); lblBlue02 = new JLabel(""); lblBlue02.setBounds(234, 198, 57, 15); contentPane.add(lblBlue02); btnNewButton = new JButton("ChooseColor"); btnNewButton.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { Color color = JColorChooser.showDialog(RGBColor.this, "팔레트", Color.RED); if (color != null) { textArea.setBackground(new Color(color.getRed(),color.getGreen(),color.getBlue())); int red = color.getRed(); // Red 값 추출 int green = color.getGreen(); // Green 값 추출 int blue = color.getBlue(); // Blue 값 추출 slider01.setValue(red); slider02.setValue(green); slider03.setValue(blue); lblRed02.setText(String.valueOf(slider01.getValue())); lblGreen02.setText(String.valueOf(slider02.getValue())); lblBlue02.setText(String.valueOf(slider03.getValue())); }else { System.out.println("취소"); } } }); btnNewButton.setBounds(406, 78, 166, 23); contentPane.add(btnNewButton); } } |
JMenuEx01.java - 메뉴만들기 |
import java.awt.EventQueue;
import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.JMenuBar; import javax.swing.JMenu; import javax.swing.JMenuItem; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import javax.swing.JCheckBoxMenuItem; public class JMenuEx01 extends JFrame { private JPanel contentPane; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { JMenuEx01 frame = new JMenuEx01(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public JMenuEx01() { setResizable(false); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 600, 800); JMenuBar menuBar = new JMenuBar(); setJMenuBar(menuBar); //menyBar생성 JMenu mn1 = new JMenu("파일"); menuBar.add(mn1); JMenuItem mntm1 = new JMenuItem("열기"); mntm1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //클릭과 Enter둘다 기능 사용 가능해짐 System.out.println("열기 클릭"); } }); mn1.add(mntm1); mn1.addSeparator(); //item사이에 중간선을 만든다. JMenuItem mntm2 = new JMenuItem("저장"); mn1.add(mntm2); mn1.addSeparator(); JMenuItem mntm3 = new JMenuItem("다른이름으로 저장"); mn1.add(mntm3); JCheckBoxMenuItem chck1 = new JCheckBoxMenuItem("사과"); chck1.setSelected(true); mn1.add(chck1); JCheckBoxMenuItem chck2 = new JCheckBoxMenuItem("수박"); mn1.add(chck2); JCheckBoxMenuItem chck3 = new JCheckBoxMenuItem("참외"); mn1.add(chck3); JMenu mn2 = new JMenu("홈"); menuBar.add(mn2); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); //nullLayout } } |
JMenuBar
- JMenu
- Menubar는 길게 생성
- Item을 밑에 추가하여 선택내용 생성 가능
BorderLayout - 모두 5개의 영역으로 나누고, 각 영역에 하나의 컴포넌트만 넣을 수 있다.
- 한 영역에 하나 이상의 컴포넌트를 넣으려면 Panel(Flow Layout)을 사용하면 된다.
BoardLayoutEx01.java - BoarderLayout을 통해 레이아웃 설정 |
import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import java.awt.BorderLayout; import javax.swing.JButton; public class BoardLayoutEx01 extends JFrame { private JPanel contentPane; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { BoardLayoutEx01 frame = new BoardLayoutEx01(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public BoardLayoutEx01() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 600, 800); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(new BorderLayout(5, 5)); JButton btnNewButton_1 = new JButton("New button"); contentPane.add(btnNewButton_1, BorderLayout.SOUTH); JButton btnNewButton_2 = new JButton("New button"); contentPane.add(btnNewButton_2, BorderLayout.WEST); JButton btnNewButton_3 = new JButton("New button"); contentPane.add(btnNewButton_3, BorderLayout.CENTER); JButton btnNewButton_4 = new JButton("New button"); contentPane.add(btnNewButton_4, BorderLayout.EAST); JPanel panel = new JPanel(); contentPane.add(panel, BorderLayout.NORTH); // JButton btnNewButton = new JButton("New button"); panel.add(btnNewButton); JButton btnNewButton_5 = new JButton("New button"); panel.add(btnNewButton_5); JButton btnNewButton_6 = new JButton("New button"); panel.add(btnNewButton_6); } } |
container은 생성하면 Layout도 설정 가능하다 (Containers -> JPanel선택)
grid.java - GridLayout을 통해 레이아웃 설정 |
import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import java.awt.GridLayout; import javax.swing.JButton; import javax.swing.JTextField; import javax.swing.JLabel; public class grid extends JFrame { private JPanel contentPane; private JTextField textField; private JTextField textField_1; private JTextField textField_2; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { grid frame = new grid(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public grid() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 600, 800); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); JPanel panel_1 = new JPanel(); panel_1.setBounds(5, 5, 574, 101); contentPane.add(panel_1); panel_1.setLayout(null); textField = new JTextField(); textField.setEditable(false); textField.setBounds(42, 40, 204, 21); panel_1.add(textField); textField.setColumns(10); textField_1 = new JTextField(); textField_1.setEditable(false); textField_1.setBounds(335, 40, 204, 21); panel_1.add(textField_1); textField_1.setColumns(10); JLabel lblNewLabel = new JLabel("~"); lblNewLabel.setBounds(284, 43, 57, 15); panel_1.add(lblNewLabel); JPanel panel_2 = new JPanel(); panel_2.setBounds(5, 116, 574, 477); contentPane.add(panel_2); panel_2.setLayout(new GridLayout(4, 3, 3, 3)); JButton btn1 = new JButton("7"); panel_2.add(btn1); JButton btn2 = new JButton("8"); panel_2.add(btn2); JButton btn3 = new JButton("9"); panel_2.add(btn3); JButton btn4 = new JButton("4"); panel_2.add(btn4); JButton btn5 = new JButton("5"); panel_2.add(btn5); JButton btn6 = new JButton("6"); panel_2.add(btn6); JButton btn7 = new JButton("1"); panel_2.add(btn7); JButton btn8 = new JButton("2"); panel_2.add(btn8); JButton btn9 = new JButton("3"); panel_2.add(btn9); JButton btn10 = new JButton("0"); panel_2.add(btn10); JButton btn11 = new JButton("DEL"); panel_2.add(btn11); JButton btn12 = new JButton("검사"); panel_2.add(btn12); JPanel panel = new JPanel(); panel.setBounds(5, 603, 574, 153); contentPane.add(panel); panel.setLayout(null); textField_2 = new JTextField(); textField_2.setText("결과:"); textField_2.setEditable(false); textField_2.setBounds(12, 10, 550, 21); panel.add(textField_2); textField_2.setColumns(10); } } |
버튼
- 마우스 동작
MouseListener
MouseEventListener
추상메서드(핸들러)
mouseClicked
mousePressed
mouseReleased
mouseEntered
mouseExited
MouseWheelEventListener
Wheel도 MouseEventListener과 동일
EventEx01.java - 이벤트 처리하기 |
import java.awt.EventQueue;
import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.JButton; public class EventEx01 extends JFrame { private JPanel contentPane; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { EventEx01 frame = new EventEx01(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public EventEx01() { setResizable(false); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 600, 800); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); JButton btn1 = new JButton("New button"); btn1.setBounds(24, 22, 97, 23); //click -> MouseListener -> addMouseListener btn1.addMouseListener(new MouseListener() { //핸들러 @Override public void mouseReleased(MouseEvent e) { // TODO Auto-generated method stub System.out.println("mouseReleased(MouseEvent e)"); } @Override public void mousePressed(MouseEvent e) { // TODO Auto-generated method stub System.out.println("mousePressed(MouseEvent e)"); } @Override public void mouseExited(MouseEvent e) { //버튼에 마우스가 내려갔을 때 // TODO Auto-generated method stub System.out.println("mouseExited(MouseEvent e)"); } @Override public void mouseEntered(MouseEvent e) { // TODO Auto-generated method stub System.out.println("mouseEntered(MouseEvent e)"); //버튼에 마우스가 올라가있을 때 } @Override public void mouseClicked(MouseEvent e) { // TODO Auto-generated method stub System.out.println("mouseClicked(MouseEvent e)"); } }); contentPane.add(btn1); JButton btn2 = new JButton("버튼2"); btn2.setBounds(24, 67, 321, 164); btn2.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { // TODO Auto-generated method stub System.out.println("mouseClicked(MouseEvent e)"); //필요한 핸들러만 사용할 수 있도록 한다. System.out.println(e.getX()); //클릭한 위치의 좌표 확인 가능 System.out.println(e.getY()); System.out.println(e.getClickCount()); //몇 번 클릭했는 지 확인 가능 System.out.println(e.getSource()); //이벤트 발생 소스확인 가능 ( 버튼을 클릭한거면 버튼에 대한 속성내용을 확인 가능하다) JButton btn =(JButton)e.getSource(); System.out.println(btn.getText()); //버튼의 이름을 가져와서 확인 가능하다 } }); contentPane.add(btn2); } } |
EventEx02.java - 클릭했을 때 처리 할 버튼이 많을 때 중앙제어를 할 수 있도록 하는 코드 |
import java.awt.EventQueue;
import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.JButton; public class EventEx02 extends JFrame { private JPanel contentPane; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { EventEx02 frame = new EventEx02(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public EventEx02() { setResizable(false); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 600, 800); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); JButton btn1 = new JButton("button1"); btn1.addMouseListener(new CustomMouseEvent3()); btn1.setBounds(12, 21, 97, 23); btn1.setName("button1"); //이름값을 내부적으로 처리 가능 contentPane.add(btn1); JButton btn2 = new JButton("button2"); btn2.addMouseListener(new CustomMouseEvent3()); btn2.setBounds(12, 54, 97, 23); btn2.setName("button2"); contentPane.add(btn2); JButton btn3 = new JButton("button3"); btn3.addMouseListener(new CustomMouseEvent3()); btn3.setBounds(12, 87, 97, 23); btn3.setName("button3"); contentPane.add(btn3); } |
CustomMouseEvent3.java - 핸들러와 어댑터를 따로 떼어낸 클래스 |
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.JButton; class CustomMouseEvent1 implements MouseListener{ @Override public void mouseClicked(MouseEvent e) { // TODO Auto-generated method stub System.out.println("mouseClicked(MouseEvent e)"); } @Override public void mousePressed(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseReleased(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseEntered(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseExited(MouseEvent e) { // TODO Auto-generated method stub } } public class CustomMouseEvent3 extends MouseAdapter { @Override public void mouseClicked(MouseEvent e) { // TODO Auto-generated method stub System.out.println("mouseClicked(MouseEvent e)"); JButton btn = (JButton)e.getSource(); System.out.println(btn.getText()); System.out.println(btn.getName()); } } } |
=> 버튼이 여러개고 처리 할 이벤트가 여러개가 되면 중앙에서 통합처리가 가능하도록 이벤트를 묶을 수 있다.
CardLayoutEx01.java - 버튼을 클릭하면 각각 다른 화면이 나옴 (구구단 출력) |
import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import java.awt.BorderLayout; import javax.swing.JButton; import java.awt.CardLayout; import java.awt.Color; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.JTextField; import javax.swing.JComboBox; import javax.swing.JTextArea; import javax.swing.JScrollPane; public class CardLayoutEx01 extends JFrame { private JPanel contentPane; private JPanel panel2; private JTextArea textArea1; private JTextArea textArea2; private JTextArea textArea3; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { CardLayoutEx01 frame = new CardLayoutEx01(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public CardLayoutEx01() { setResizable(false); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 600, 800); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(new BorderLayout(0, 0)); JPanel panel1 = new JPanel(); contentPane.add(panel1, BorderLayout.NORTH); JButton btn1 = new JButton("1단"); btn1.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { //panel2_1/ name_282375442508400 ((CardLayout)panel2.getLayout()).show(panel2,"name_282375442508400"); textArea1.setText(gugudan("1")); } }); panel1.add(btn1); JButton btn2 =new JButton("2단"); btn2.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { //panel2_2/ name_282393855371000 ((CardLayout)panel2.getLayout()).show(panel2,"name_282393855371000"); textArea2.setText(gugudan("2")); } }); panel1.add(btn2); JButton btn3 = new JButton("3단"); btn3.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { //panel2_3 / name_282415314988200 ((CardLayout)panel2.getLayout()).show(panel2,"name_282415314988200"); textArea3.setText(gugudan("3")); } }); panel1.add(btn3); panel2 = new JPanel(); contentPane.add(panel2, BorderLayout.CENTER); panel2.setLayout(new CardLayout(0, 0)); JPanel panel2_1 = new JPanel(); //panel위에 panel을 올린것 panel2_1.setBackground(Color.LIGHT_GRAY); panel2.add(panel2_1, "name_282375442508400"); panel2_1.setLayout(null); JScrollPane scrollPane = new JScrollPane(); scrollPane.setBounds(34, 27, 515, 465); panel2_1.add(scrollPane); textArea1 = new JTextArea(); textArea1.setEditable(false); scrollPane.setViewportView(textArea1); JPanel panel2_2 = new JPanel(); panel2_2.setBackground(Color.LIGHT_GRAY); panel2.add(panel2_2, "name_282393855371000"); panel2_2.setLayout(null); JScrollPane scrollPane_1 = new JScrollPane(); scrollPane_1.setBounds(29, 25, 515, 451); panel2_2.add(scrollPane_1); textArea2 = new JTextArea(); scrollPane_1.setViewportView(textArea2); textArea2.setEditable(false); JPanel pane2_3 = new JPanel(); pane2_3.setBackground(Color.LIGHT_GRAY); panel2.add(pane2_3, "name_282415314988200"); pane2_3.setLayout(null); JScrollPane scrollPane_2 = new JScrollPane(); scrollPane_2.setBounds(30, 22, 513, 443); pane2_3.add(scrollPane_2); textArea3 = new JTextArea(); scrollPane_2.setViewportView(textArea3); textArea3.setEditable(false); } public String gugudan(String num) { String result=""; for(int i=1; i<=9;i++) { result+= num+"x"+i+"="+ Integer.parseInt(num)*i+"\n"; } return result; } } |
우편번호를 검색해서 Frame textfield에 해당 검색 내용이 출력될 수 있도록 만들기
우편번호 검색 버튼을 누르면 다이얼로그 켜짐 (완)
우편번호 검색내용이 나오면 해당 내용이 AREA에 들어가게 된다.
(검색내용을 가져와서 다이얼로그에 표시하기)
우편번호 검색(완료)
- 다른것도 검색했을 대 뜰 수 있도록 최종 결과물만 text에 뜨도록 만들기
'Programming > JAVA' 카테고리의 다른 글
[JAVA] 데이터 출력 (xml, json) (0) | 2023.09.21 |
---|---|
[JAVA] Network (0) | 2023.09.19 |
[JAVA] GUI(4) (0) | 2023.09.15 |
[JAVA] GUI(3) (0) | 2023.09.14 |
[JAVA] GUI(2) (0) | 2023.09.12 |