본문 바로가기

Today I Learned

(17)
자바 GUI 기초 - JOptionPane JOptionPane JOptionPane은 알림창 같은 다이얼로그 박스를 띄우게 만들어주는 컴포넌트이다. showMessageDialog()는 부모컴포넌트, 메세지, 타이틀, 메세지 타입을 작성할 수 있으며 다양한 메세지 타입으로 질문,경고,에러 아이콘의 알림창을 띄울 수 있다. JOptionPane.showMessageDialog(parentComponent, message, title, messageType); public static void main(String[] args) { //JOptionPane = pop up a standard dialog box that prompts users for a value //or informs them of something JOptionPane.sho..
자바 GUI 기초 - JButton JButton 자바의 JButton은 버튼 컴포넌트이다. 클릭했을 때 이벤트를 발생시키는 액션 리스너를 달 수 있다. 또한 여러가지 함수들을 제공한다 먼저 JFrame을 상속받은 MyFrame을 만들고 ActionListener를 implements 했다. 그러면 반드시 구현해줘야 하는 actionPerformed() 함수가 생긴다. public class MyFrame extends JFrame implements ActionListener { JButton button = new JButton(); MyFrame() { this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setLayout(null); this.setSize(500,500); this..
JAVA GUI : Create New Window 버튼을 클릭하면 새로운 윈도우 창이 나오는 프로그램이다. 다음과 같이 메인 함수를 만들어주고 public class Main { public static void main(String[] args) { LaunchPage launchPage = new LaunchPage(); } } 처음 화면을 실행하면 LaunchPage가 나타난다. LaunchPage는 버튼이 있는 페이지이다. public class LaunchPage implements ActionListener { //components JFrame frame = new JFrame(); JButton myButton = new JButton("Hello duckky"); LaunchPage() { myButton.setBounds(100, 16..
JAVA LayoutManager(배치관리자) : FlowLayout, GridLayout FlowLayout은 컴포넌트를 행(row) 방향으로 배치하는 레이아웃이다. 컴포넌트들이 배치되는 공간이 부족하면 자동으로 아래로(다음 줄로) 넘어간다. //Flow Layout = places components in a row, sized at their preferred size. //If the horizontal space in the container is too small, //the FlowLayout class uses the next available row. frame.setLayout(new FlowLayout()); //set FlowLayout 레이아웃은 배치하려는 컴포넌트들의 상위 객체인 부모 객체에 등록하게 된다. flowLayout은 아래와 같은 메소드를 가지고 있다. (1..
JAVA LayoutManager(배치관리자) : BorderLayout LayoutManager를 사용하면 자바 스윙의 컴포넌트들의 좌표를 자동으로 계산하여 배치해준다. 1. Border Layout BorderLayout은 컴포넌트들을 NORTH, SOUTH, WEST, EAST, CENTER 방향으로 배치할 수 있으며 가장 많이 사용되는 레이아웃이기도 하다. 사용하기 위해서는 아래와 같이 코드를 작성하면 된다. public class BorderLayoutEX { public static void main(String[] args) { //BorderLayout = A BorderLayout places components in five area //NORTH, SOUTH, WEST, EAST, CENTER //all extra space is placed in the ..
자바 GUI 기초 - JFrame, JLabel, JPanel JFrame 자바 GUI의 최상위 윈도우는 JFrame이다. 사용할 수 있는 속성은 간단하게 아래와 같다. public static void main(String[] args) { JFrame frame = new JFrame(); //creates a frame frame.setSize(420,420); frame.setTitle("JFrame title goes here"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //EXIT OUT frame.setResizable(false); //prevent frame from being resized frame.getContentPane().setBackground(new Color(0x123456))..
File Class - write/read 파일을 사용하고 싶을때는 File 클래스를 사용한다. File객체를 생성하고 ("파일의 경로") 를 적어준다. 위와 같이 이클립스 내에서 파일을 생성하는 경우 File file = new File("secret_message.txt"); 위와 같이 경로를 설정하여 파일을 사용할 수 있다. 혹은 바탕화면에 파일을 생성한 경우에는 파일의 속성 -> 위치를 확인하여 경로를 적어줄 수 있다. 위의 경로를 복사하여 파일에 적어주면 이클립스 내에 파일이 없어도 실행 가능하다. 파일 클래스가 가지고 있는 메소드는 아래와 같다. public static void main(String[] args) { File file = new File("secret_message.txt"); if(file.exists()) { Sy..
HTTP 1.1) http통신, stateless, mime 타입 기본적으로 통신을 하기 위해서는 두개의 대상에 스트림(stream)이 연결되어야 한다. *바이트 스트림이라고 하며, 8bit(문자 하나)가 왔다갔다 하면서 통신을 한다. A는 클라이언트이고 B는 서버이다. A가 B에게 데이터를 쏘는 스트림은 write 하겠다는 뜻이고 B가 A에게 데이터를 쏘는 스트림은 read 하겠다는 뜻이다. 하나의 스트림은 write, 하나의 스트림은 read. 이것이 일반적인 통신이다. B가 데이터를 가지고 있는 갑, 서버라면 B는 A가 궁금하지 않다. A가 B가 가지고 있는 데이터를 가져오고 싶어서 B에게 스트림을 연결하고 데이터를 요청하게 된 것이며, 이것에 대해 B는 응답을 하게 된다. 이렇게 데이터를 요청하는 A는 클라이언트이고 데이터를 응답하는 B는 서버이다. 서버는 클라..
스프링부트 프로젝트 생성하기 / 실행 error 해결하기 스프링 프로젝트는 다음과 같이 생성하였다. Spring boot developer tools는 프로젝트에서 파일이 변경될 때 자동으로 재시작해준다. Lombok은 getter, setter, 생성자를 자동 생성해준다. Spring data JPA는 데이터베이스를 위한 것으로, JPA를 통해 데이터베이스를 만들 것이다. 데이터베이스는 MySQL을 사용할 것이다. Spring security는 보안과 관련된 라이브러리이다. Spring web은 어노테이션을 위해 사용한다. 톰켓이 기본적으로 내장되어 있다. 스프링은 IOC(제어의 역전)으로 내가 아닌 스프링이 컴포넌트 스캔을 하고 메모리에 로드하여 객체를 new하기 때문에, 스프링이 스캔을 할 때 이미 정의된 이름이 아닌 다른 이름인 패키지의 경우 스캔을 할..
oauth의 동작원리 사용자의 데이터를 구글이나 페이스북과 같은 다른 서비스에서 가져와서 그 정보를 가공하여 사용자에게 가치를 전달하고 싶다면 우리는 oauth를 사용할 수 있다. 우리가 사용자에게 제공하고자 하는 서비스는 클라이언트, 우리의 서비스를 사용하는 사용자는 리소스 오너, 사용자의 정보를 가지고 있는 구글이나 페이스북과 같은 회사는 리소스 서버라고 가정하자. 클라이언트가 사용자에게 리소스 서버의 아이디와 패스워드를 물어보고, 그것을 저장했다가 필요한 경우 리소스서버에 해당 아이디와 패스워드로 접속하면 사용자에 대한 정보를 가져올 수 있다. 하지만 여기서 보안이라는 중요한 문제점이 생긴다. 리소스 서버는 클라이언트를 어떻게 믿고 사용자의 아이디와 패스워드를 줄까? 사용자의 데이터는 아주 중요한 정보이기 때문에, 최근..