Sponsored By
















GUI 창에 HTML 을 파싱 하는 방법임.

 

 

 

 

 

간단하게 만들 GUI창을 설명하면

 

'UTF-8' 과 'EUC-KR' 을 선택할 콤보박스를 만들고 그옆에 주소창 입력칸을 만들어서 입력하면 

메인칸에 나타나게하도록 만들겠다.

 

 

 

 

00. 코드를 입력하고 실행하자.







01. 콤보박스에 'UTS-8'과 'EUC-KR' 선택할 수 있게 나온다.







02. 아무 주소를 입력해서 HTML파싱이 잘되는지 확인해보자.





 

 

03. 'UTF-8' 로 했을때 한글이 잘 나오는것을 확인할 수 있다.

 

 

 

 

 

 

04. 'EUC-KR' 로 했을때 한글이 깨져서 오는것을 확인할 수 있다.

 

 

 

 

 

※. 코드

 

import java.awt.BorderLayout;

import java.awt.FlowLayout;

import java.awt.Font;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.net.URL;

 

import javax.swing.JComboBox;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTextArea;

import javax.swing.JTextField;

 

class MyFrame extends JFrame implements ActionListener{

private JPanel displayPanel; 

private JPanel inputPanel;

 

private JTextArea display;

private JTextField input;

 

private String[] charset = {"UTF-8", "EUC-KR"};

private JComboBox charsetList;

 

 

public MyFrame()

{

this.setTitle("No Title");

}

 

 

public MyFrame(String title)

{

this.setTitle(title);

this.setSize(500, 400);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

 

this.setLayout( new BorderLayout() );

 

 

 

 

 

/*

 * panel 생성하고, 필요한 컴포넌트를 만들기

 */

 

displayPanel = new JPanel();

displayPanel.setLayout(new FlowLayout());

display = new JTextArea(11, 30);

Font displayFont = new Font("Serif", Font.BOLD, 20);

display.setFont(displayFont);

display.setEditable(false);

 

// textarea를 스크롤이 되도록 변경

JScrollPane scroll = new JScrollPane(display);

displayPanel.add(scroll);

 

/* input */

inputPanel = new JPanel();

inputPanel.setLayout(new FlowLayout());

input = new JTextField(20);

Font inputFont = new Font("Serif", Font.BOLD, 20);

input.setFont(inputFont);

input.addActionListener(this);

 

 

charsetList = new JComboBox(charset);  //콤보박스 추가

charsetList.setSize(100,40);

inputPanel.add(charsetList);  // 패널에 콤보박스 붙임

 

inputPanel.add(input);

 

/*

 * Frame에 두개의 panel을 붙이기

 */

this.setLayout(new BorderLayout());

this.add(displayPanel, BorderLayout.CENTER);

this.add(inputPanel, BorderLayout.SOUTH);

 

 

this.setVisible(true);

}

 

 

 

 

@Override

public void actionPerformed(ActionEvent e) {

 

if(e.getSource() == input)

{

display.append( input.getText() + "\n");

 

 

try {

 

URL url = new URL(input.getText());  // input에 주소창을 넣으면 그 값을 읽어옴.

 

display.setText("");  // 이벤트가 발생하면 display 를 비워주고 새로 getText해옴

 

String cs = (String)charsetList.getSelectedItem();  // 콤보박스에 있는 아이템을 cs 로 받음

 

BufferedReader in = new BufferedReader( new InputStreamReader( url.openStream(), cs ) );  // buffer는 한번에 주기적으로 받아오는것  

 

String line;

int count = 0;

String lineCount = "";

 

while( (line = in.readLine()) != null)

{

lineCount = lineCount.format("%4d : ", ++count);  // 4d 를 해서 제일 처음에 4줄을 잡아먹게 만든다.

display.append(lineCount + line + "\n");

 

}// while

 

} catch (Exception e2) {

display.append("ERROR : " + e2.getMessage() + '\n');

}

 

input.selectAll();

//input.setText("");

 

}// if

 

}// actionPerformed

 

}// MyFrame Class

 

 

public class Test {

 

public static void main(String[] args) {

 

MyFrame frame = new MyFrame("HTML");

 

}// main

 

}// Main Class

 

 

 

 

 

 

 



Sponsored By















+ Recent posts