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();
}
}
'IT_Programming > Java' 카테고리의 다른 글
사진을 움직일수 있게 하고 사진이 프레임 밖으로 넘어가지못하게.... (0) | 2008.08.20 |
---|---|
JMF 이용해서 영상을 JFrame에 보여주기 (0) | 2008.08.20 |
JTabbedPane & JEditorPane Example (0) | 2008.08.20 |
JDialog Example (0) | 2008.08.20 |
JPopupMenu Example (0) | 2008.08.20 |