자바 간단한 웹 브라우저 만들기

Kyu·2021년 2월 1일
0

https://youtu.be/anoPsxasIBE
이 강의를 보면서 웹브라우저를 따라 만들어본 포스트입니다.

어떻게 만들어 질것인가?

  • 자바 GUI
  • swing API
  • 프레임은 메인페이지와 주소입력창으로 나뉘어집니다.
  • 네트워크에 대한 지식을 하나도 쓰지 않습니다.
import javax.swing.*;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

---

public class ReadFile extends JFrame {

    private JTextField addressBar;
    private JEditorPane display;

    //constructor
    public ReadFile() {
        super("Kyu Browser");

        addressBar = new JTextField("Enter a URL!");
        addressBar.addActionListener(
                new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent event) {
                        loadCrap(event.getActionCommand());
                        // URL 로 가는 방법 1 (직접 type)
                    }
                }
        );
        add(addressBar, BorderLayout.NORTH);

        display = new JEditorPane();
        display.setEditable(false); // only view i
        display.addHyperlinkListener( // URL 로 가는 방법 2 (링크 클릭)
                // 웹페이지를 불렀을때 모든 링크가 클릭되길 기다린다.
                new HyperlinkListener() {
                    @Override
                    public void hyperlinkUpdate(HyperlinkEvent event) {
                        if (event.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
                            loadCrap(event.getURL().toString());
                        }
                    }
                }
        );
        add(new JScrollPane(display), BorderLayout.CENTER);
        setSize(500, 300);
        setVisible(true);
    }

    //load crap to display on the screen
    private void loadCrap(String userText) {
        try{
            display.setPage(userText); // setPage가 웹 페이지에 들어가는거 다한다
            addressBar.setText(userText);
        } catch (Exception e){
            System.out.println("crap!");
        }
    }
}

import javax.swing.*;

public class ReadFileMain {
    public static void main(String[] args) {
        ReadFile dude = new ReadFile();
        dude.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}
profile
TIL 남기는 공간입니다

0개의 댓글