2008년 7월 14일 월요일

JEditorPane 에서의 하이퍼링크 이벤트처리


import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
public class HyperLinkTest {
public static void main(String[] args) {

// JFrame 설정
JFrame frame = new JFrame();
frame.setLayout(new BorderLayout());

// JEditorPane 설정
JEditorPane edPane = new JEditorPane();
edPane.setEditable(false);
edPane.addHyperlinkListener(new CstmHyperlinkListener());
//html은 게시판이 거부하네요 그래서 그림으로

JScrollPane jsp = new JScrollPane( edPane );
frame.add( jsp, BorderLayout.CENTER );
frame.setSize( 300,200 );
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.setVisible( true );
}
}

class CstmHyperlinkListener implements HyperlinkListener
{
public void hyperlinkUpdate(HyperlinkEvent evt)
{
if (evt.getEventType() == HyperlinkEvent.EventType.ACTIVATED)

{
String Temp = evt.getURL().toString();//url에서 문자열 가져오기
// 문자열에서 http:제거 if에서 http:까지 비교한다면 제거할 필요 없음
String Result = Temp.substring(5, Temp.length());

if(Result.equals("작업A링크")) System.out.println("작업 A 수행...");
else if(Result.equals("작업B링크")) System.out.println("작업 B 수행...");

//if(event == 작업A 에서 발생) 작업 A 수행...
//else if(event == 작업B 에서 발생) 작업 B 수행...

}
}
}
//좌표를 사용하는 방법도 있는데 그냥 막무가내로 문자열로 했습니다.

문]
JEditorPane 내의 특정 텍스트에 링크형식을 걸기 위해 a href HTML구문을 이용했습니다.
이 텍스트를 누르면..... 어떤 URL로 익스플로어를 띄우기 위한게 아니라 다이얼로그를 띄운다던지 그런 작업을 하려고 하는데요..
그러기 위해선 하이퍼링크이벤트 함수에서... 링크가 걸려있는 텍스트가 무엇인지 인식을 해야하는데 그걸 어떻게 구현해야할지 모르겠네요..

댓글 없음:

댓글 쓰기

-


Sidewinder


World


FishMusic


LaughingBaby