2008년 7월 16일 수요일

java JEditorPane Example

JEditorPane 에서 특정문자열에 포커스 설정하기


import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

import javax.swing.event.*;

class test extends JFrame implements ActionListener

{

JEditorPane edPane = new JEditorPane();

JScrollPane jsp = new JScrollPane(edPane);

JButton bt = new JButton("찾기");

private JTextField find;

private int toffset=0;

public test(){

JPanel northP = new JPanel();

find = new JTextField(17);

northP.add( find, BorderLayout.CENTER);

northP.add(bt, BorderLayout.EAST);

this.getContentPane().add(northP, BorderLayout.NORTH);

JPanel centerP = new JPanel();

this.getContentPane().add(jsp, BorderLayout.CENTER);

edPane.setContentType("text/html");

edPane.setText("<html><body>"+

"STAR<br>" +

"RIP<br>" +

"EIGRP<br>" +

"aaa<br>"+

"bbb<br>"+

"ccc<br>"+

"ddd<br>"+

"STAR<br>"+

"111<br>"+

"222<br>"+

"RIP<br>"+

"333<br>"+

"444<br>"+

"STAR<br>"+

"</body></html>");

this.setSize(300,300);

this.show();

bt.addActionListener(this);

}

public void actionPerformed(ActionEvent e){

if(e.getSource()==bt){

/* 텍스트필드에 STAR 입력 후 버튼클릭하면 이벤트 처리하는 함수 */

// 1.텍스트에 입력된 STAR자열을 받아 JEditorPane 에서 차례차레 찾아가며 JEditorPane의 그 문자에 requestFocus()를 맞춘다.

// 2.즉, 그 스트링이 있는 JEditorPane 의 라인이 JEditorPane 화면상에 보이게 한다. ex) 인터넷익스플로어처럼..

// 3. 찾아진 문자에 대해 마우스드래그를 씌운채로 리퀘스트포커스가 맞춰지도록 한다.

// 4.그리고 System.out.println()으로 찾고자 하는 스트링이 들어있는 JEditorPane 각각의 라인이 몇번째 라인인지 출력


String tempfind = find.getText();


edPane.selectAll();


String tempString = edPane.getSelectedText();

// 문자열들의 길이


int tfGetLength = tempfind.length();


int taGetLength = tempString.length();


for(;toffset < taGetLength;toffset++){


// 문자 비교


if(tempString.regionMatches(toffset, tempfind, 0,tfGetLength)) break;


}


edPane.select(toffset,toffset + tfGetLength); //toffset 부터 문자열 선택


edPane.requestFocus();


toffset++; // 이어서 찾기 위해


}

}

public static void main(String[] args)

{

new test();

}

}

문]
예를 들어, 텍스트필드에 STAR 라는 문자를 입력후 버튼클릭하면 JEditorPane에서 그 문자열을 찾아 그 문자열이 있는부분마다 포커스가 맞춰지도록 하고싶습니다. 인터넷익스플로어의 "찾기" 기능처럼 구현하기를 원하는데 쉽지가 않네요..;;

댓글 없음:

댓글 쓰기

-


Sidewinder


World


FishMusic


LaughingBaby