본문 바로가기

BackEnd/Java

[java]이것이 자바다 부록 Java UI 6-1 (Swing을 이용한 텍스트 컴포넌트 2)

728x90
반응형

1. JEditorPane

   ▷ 다양한 타입의 문서를 보여주거나 편집이 가능한 멀티 라인의 텍스트 컴포넌트

   ▷ 단순 텍스트, HTML 타입의 문서를 지원

   ▷ HTML 문서를 표시할 경우 setEditable(false)를 호출해 편집할 수 없도록 하고,

        사용자가 링크를 클릭할 경우 HyperlinkListener 등록해 HyperlinkEvent 이벤트를 처리할 수 있음

   ▷ HyperlinkEvent는 마우스를 링크 위로 가져갔을 경우, 링크 바깥으로 가져갔을 경우, 링크를 클릭했을 경우 모두 발생

 

◎ HTML을 삽입하는 예제

import java.awt.BorderLayout;

import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;

public class JEditorPaneExample extends JFrame {
	private JEditorPane jEditorPane;
	
	// 메인 윈도우 설정
	public JEditorPaneExample() {
		this.setTitle("JEditorPaneExample");
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.getContentPane().add(new JScrollPane(getJEditorPane()),
				BorderLayout.CENTER);
		this.setSize(400, 300);		
	}
	
	// JEditorPane 생성
	public JEditorPane getJEditorPane() {
		if(jEditorPane == null){
			jEditorPane = new JEditorPane();
			try {
				jEditorPane.setPage(getClass().getResource("jeditorpane.html"));
			} catch (Exception e) {}
			jEditorPane.setEditable(false);
			jEditorPane.addHyperlinkListener(new HyperlinkListener() {
				public void hyperlinkUpdate(HyperlinkEvent e) {
					if(e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
						try {
							jEditorPane.setPage(e.getURL());
						} catch (Exception e2) {}
					}
				}
			});
		}
		return jEditorPane;
	}
	
	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				JEditorPaneExample jFram = new JEditorPaneExample();
				jFram.setVisible(true);
			}
		});
	}
}

 

source를 누르면 오른쪽 페이지로 넘어가고 previous를 누르면 왼쪽 페이지로 다시 돌아옵니다.

 

JEditorPane를 HTML을 창에 띄우고 해당 코드를 확인할 수 있게 구현해보았습니다.

 

여러 파일들을 활용할 때 메서드나 기능들을 잘 적용해야겠어요!!! 더 많은 기능들에 대해서 배워볼게요~!!

 

많은 분들의 피드백은 언제나 환영합니다!  많은 댓글 부탁드려요~~

 

728x90
반응형