이 기사는 SWT를 기반으로 한 Java 쓰기 메모장의 상세한 과정을 소개합니다. 참조를 위해 귀하와 공유됩니다. 특정 내용은 다음과 같습니다
Windows 시스템, 바보 스타일의 교육 및 단계별 작업에서 데스크탑 메모장의 기본 기능을 실현할 수 있습니다. Xiaobai는 또한 혼자서 완전한 신청서를 작성할 수 있습니다.
필수 도구 : Eclipse (SWT 플러그인 포함)
완제품은 다음과 같습니다.
애플리케이션 기능 소개 :
기능 분석 :
파일 메뉴에는 포함됩니다
1.1. CTRL+n을 작성하십시오
1.2open (O) Ctrl+O
1.3SAVE (S) Ctrl+s
1.4 as (a)
1.5 종료 (x)
편집 메뉴에는 다음이 포함됩니다.
2.1 UNDO (U) Ctrl+Z
2.2 전단 (t) Ctrl+t
2.3 복사 (c) Ctrl+c
2.4 페이스트 (P) Ctrl+V.
2.5 삭제 (L) 델
2.6 찾기 (d) ctrl+f
2.7 다음 장소를 찾으십시오 (N) F3
2.8 교체 (R) Ctrl+h
2.9 (g) Ctrl+g로 이동하십시오
2.10 모든 (a) Ctrl+a를 선택하십시오
2.11 시간/날짜 (d) F5
형식 메뉴에는 포함됩니다
3.1 자동 라인 랩 (W)
3.2 글꼴 (F)
보기 메뉴에는 포함됩니다
4.1 상태 표시 줄 (S)
도움말 메뉴에는 포함됩니다
5.1 도움말보기 (H)
5.2 메모장 (a) 정보
다음으로, 다음과 같이 몇 가지 특정 범주의 메모장을 작성하기 위해 단계별로 가르쳐 줄 것입니다.
1. nonetepad.java
이 클래스는 각 버튼의 청취 이벤트가 포함 된 주요 인터페이스 클래스입니다.
2. util.java 클래스이 클래스는 보조 클래스로, 다른 클래스의 기본 창 클래스에서 정의 된 멤버를 호출 할 수 있습니다.
3. Aboutauthor.java
저자의 수업에 대해, 저자 정보를 표시하기위한 대화 창
4.FindWindow.java
검색 기능의 대화 상자 창
5. go_to.java
함수의 대화 창으로 이동하십시오
6. OpenMethod.java
캡슐화 된 파일을 열 수있는 두 가지 방법이 있습니다
7. Savamethod.java
파일을 저장하는 두 가지 방법
8.wtrsourcemanager.java
이 클래스는 외부에서 가져온 클래스이며 이미지를로드하는 데 사용됩니다.
9.test.java
프로그램 입력, 편리한 패키지 JAR 파일 나중에
10. QuitMethod.java
창을 닫는 두 가지 방법이 캡슐화됩니다
쓰기 단계 :
하나. 새 SWT 프로젝트를 만들고 첫 번째 창을 만듭니다.
Eclipse, New-> Other-> Windowbuilder-> SWT Designer-> SWT/Jface Java 프로젝트를 열어줍니다. 프로젝트 이름 메모장의 이름을 지정하십시오
새로 생성 된 메모장 프로젝트를 열고 SCR에서 새로 또는> 패키지를 마우스 오른쪽 단추로 클릭하여 com.chance.org라는 새 패키지를 만듭니다.
팁 : 패키지의 이름 지정 규칙은 COM을 사용하는 데 가장 적합합니다. custom.org. 왜 그런지 묻지 말고, 앞으로 일한 후에 이해할 것입니다.
새로 생성 된 패키지를 마우스 오른쪽 버튼으로 클릭하십시오. new-> other-> windowbuilder-> swt designer-> swt-> 응용 창 이름 메모장
이 시점에서 우리는 첫 번째 SWT 창을 만들고 소스 오른쪽의 디자인을 클릭하여 시각적 프로그래밍을 실현하기 위해 새로 만든 숫자의 그래픽 인터페이스를 볼 수 있습니다.
메모장 양식의 속성의 TXT 속성 이름을 다음과 같이
복합재의 복합재 구성 요소를 메모장 구성 요소로 드래그하고 레이아웃 속성을 FillLayout으로 수정하여 전체 인터페이스를 나중에 편집 도메인으로 바꿀 수 있도록하십시오. 그런 다음 텍스트 구성 요소를 복합재 구성 요소로 드래그하십시오. 텍스트 구성 요소의 속성 스타일에서 h_scroll 속성 및 v_scroll 속성을 확인하십시오.
설명 : H_SCROLL은 수평 스크롤 막대, V_SCROLL은 수직 스크롤 막대입니다.
둘. 메뉴 표시 줄의 관련 레이블과 양식의 전체 레이아웃을 설정하십시오.
메뉴 표시 줄 구성 요소를 선택하여 기본 형식으로 드래그하십시오.
1. 첫 번째 메뉴 항목 (파일) 설정
CASCDE 메뉴 구성 요소를 선택하고 메뉴 표시 줄 구성 요소로 드래그하고 속성을 수정합니다. 파일 _menu로 변수 속성을 수정하고 텍스트를 파일 (f)로 수정하십시오.
1.1 설정 하위 메뉴 : Create (N) Ctrl+n
Cascde 메뉴 구성 요소에 추가 할 메뉴 항목을 선택하고 속성을 수정하십시오. 변수 속성을 new_file로 수정하고 텍스트를 다음과 같이 수정하십시오. new (n) ctrl+n;
1.2 설정 하위 메뉴 : Open (O) Ctrl+O.
CASCDE 메뉴 구성 요소에 추가 할 메뉴 항목을 선택하고 속성을 수정합니다. 변수 속성을 Open_File로 수정하고 텍스트를 다음과 같이 수정하십시오.
1.3 설정 하위 메뉴 : (O) Ctrl+S를 저장합니다
CASCDE 메뉴 구성 요소에 추가 할 메뉴 항목을 선택하고 속성을 수정합니다. 변수 속성을 Save_File로 수정하고 텍스트를 다음과 같이 수정하십시오. save (o) ctrl+s
1.4 설정 하위 메뉴 : (a)로 저장
Cascde 메뉴 구성 요소에 추가 할 메뉴 항목을 선택하고 속성을 수정하십시오. 변수 속성을 Save_as로 수정하고 텍스트를 다음으로 수정하십시오.
1.5 설정 하위 메뉴 : 종료 (x)
CASCDE 메뉴 구성 요소에 추가 할 메뉴 항목을 선택하고 속성을 수정하십시오. 변수 속성을 종료하려면 텍스트를 수정하십시오 : EXIT (x)
2. 두 번째 메뉴 항목 설정 (편집)
CASCDE 메뉴 구성 요소를 선택하고 메뉴 표시 줄 구성 요소로 드래그 한 다음 속성을 수정합니다. 변수 속성을 edit_menu로 수정하고 텍스트를 편집 (e)으로 수정하십시오.
2.1 설정 하위 메뉴 : UNDO (U) Ctrl+Z
CASCDE 메뉴 구성 요소에 추가 할 메뉴 항목을 선택하고 속성을 수정합니다. 변수 속성을 취소하고 텍스트를 수정하고 다음과 같이 수정하십시오.
2.2 설정 하위 메뉴 : cut (t) ctrl+t
CASCDE 메뉴 구성 요소에 추가 할 메뉴 항목을 선택하고 속성을 수정합니다. 컷으로 변수 속성을 수정하고 텍스트를 다음과 같이 수정하십시오. cut (t) ctrl+t, 그리고 change anable to false;
2.3 설정 하위 메뉴 : 복사 (c) Ctrl+c
CASCDE 메뉴 구성 요소에 추가 할 메뉴 항목을 선택하고 속성을 수정하십시오. 복사 할 변수 속성을 수정하고 텍스트를 다음과 같이 수정하십시오. copy (c) ctrl+c, 변경을 거짓으로 사용하십시오.
2.4 설정 하위 메뉴 : 페이스트 (P) Ctrl+V.
Cascde 메뉴 구성 요소에 추가 할 메뉴 항목을 선택하고 속성을 수정하십시오. 페이스트로 변수 속성을 수정하고 텍스트를 다음과 같이 수정하십시오. Paste (P) Ctrl+V
2.5 설정 하위 메뉴 : 삭제 (L) DEL
CASCDE 메뉴 구성 요소에 추가 할 메뉴 항목을 선택하고 속성을 수정합니다. 변수 속성을 삭제하려면 텍스트를 수정하고 다음과 같이 수정하십시오. delete (l) del 및 change inable to false;
2.6 설정 하위 메뉴 : 찾기 (d) Ctrl+f
CASCDE 메뉴 구성 요소에 추가 할 메뉴 항목을 선택하고 속성을 수정합니다. 변수 속성을 찾아 찾아서 텍스트를 수정하십시오.
2.7 설정 하위 메뉴 : 다음 장소를 찾으십시오 (N) F3
CASCDE 메뉴 구성 요소에 추가 할 메뉴 항목을 선택하고 속성을 수정합니다. 변수 속성을 Find_Next로 수정하고 다음을 수정하십시오. 다음 장소 (n) F3을 찾아서 확인을 거짓으로 변경하십시오.
2.8 설정 하위 메뉴 : (r) Ctrl+h를 교체합니다
CASCDE 메뉴 구성 요소에 추가 할 메뉴 항목을 선택하고 속성을 수정합니다. 변수 속성을 수정하고 텍스트를 다음과 같이 수정하십시오. (r) ctrl+h를 대체하고 change anable to false;
2.9 설정 하위 메뉴 : (g) Ctrl+G로 이동하십시오
Cascde 메뉴 구성 요소에 추가 할 메뉴 항목을 선택하고 속성을 수정합니다. 변수 속성을 GO_TO로 수정하고 다음으로 텍스트를 수정하십시오. (g) CTRL+G로 이동
2.10 설정 하위 메뉴 : 모든 (a) Ctrl+a를 선택하십시오
Cascde 메뉴 구성 요소에 추가 할 메뉴 항목을 선택하고 속성을 수정하십시오. 변수 속성을 selectall로 수정하고 텍스트를 수정하십시오.
2.11 설정 하위 메뉴 : 시간/날짜 (D) F5
CASCDE 메뉴 구성 요소에 추가 할 메뉴 항목을 선택하고 속성을 수정합니다. 변수 속성을 ShowDate로 변경하고 다음으로 텍스트를 수정하십시오. 시간/날짜 (d) F5
3. 세 번째 메뉴 항목 설정 (형식)
Cascde 메뉴 구성 요소를 선택하고 메뉴 표시 줄 구성 요소로 드래그하고 속성을 수정합니다. 변수 속성을 Format_Menu로 수정하고 텍스트를 형식 (o)으로 수정하십시오.
3.1 설정 하위 메뉴 : 자동 라인 랩 (W)
Cascde 메뉴 구성 요소에 추가 할 메뉴 항목을 선택하고 속성을 수정하십시오. 변수 속성을 auto_enter로 수정하고 텍스트를 다음과 같이 수정하십시오.
3.2 설정 하위 메뉴 : 글꼴 (F)
Cascde 메뉴 구성 요소에 추가 할 메뉴 항목을 선택하고 속성을 수정하십시오. 변수 속성을 SetFont로 수정하고 텍스트를 다음과 같이 수정하십시오. font (f)
4. 네 번째 메뉴 항목 설정 (보기)
CASCDE 메뉴 구성 요소를 선택하고 메뉴 표시 줄 구성 요소로 드래그하고 속성을 수정합니다. view_menu로 변수 속성을 수정하고 텍스트를 수정합니다 (v);
4.1 설정 하위 메뉴 : 상태 표시 줄 (S)
CASCDE 메뉴 구성 요소에 추가 할 메뉴 항목을 선택하고 속성을 수정하십시오. 변수 속성을 상태로 수정하고 텍스트를 다음과 같이 수정하십시오.
5. 다섯 번째 메뉴 항목 설정 (도움말)
Cascde 메뉴 구성 요소를 선택하고 메뉴 표시 줄 구성 요소로 드래그하고 속성을 수정하십시오. help_menu로 변수 속성을 수정하고 텍스트를 수정하여 (h);
5.1 설정 하위 메뉴 : 도움말보기 (H)
CASCDE 메뉴 구성 요소에 추가하려면 메뉴 항목을 선택하고 속성을 수정합니다. 변수 속성을 LookHelp로 변경하고 다음으로 텍스트를 수정하십시오. 도움말보기 (h)
5.2 설정 하위 메뉴 : 메모장 소개 (a)
CASCDE 메뉴 구성 요소에 추가하려면 메뉴 항목을 선택하고 속성을 수정합니다. 변수 속성을 AboutAuthor로 변경하고 텍스트를 다음과 같이 수정하십시오.
이 시점에서 전체 페이지 레이아웃의 렌더링은 다음과 같이 설정되었습니다.
다음으로 다양한 기능을 구현하십시오
삼. 설정 메뉴 바로 가기 키
setAccelerator () 함수 소개 : setAccelerator () 함수를 사용하여 관련 바로 가기 키를 설정하십시오. 전달 된 매개 변수는 핵심 값입니다. 예를 들어, 바로 가기 키 Ctrl+n은 다음과 같이 설정됩니다. setAccelerator (swt.ctrl+'n');
바로 가기 키 F5 설정 메소드는 다음과 같습니다. Object.setAccelerator (Swt.f5);
이것으로부터 우리는 필요한 모든 바로 가기 키를 설정할 수 있습니다.
new_file.setaccelerator (swt.ctrl + 'n'); // 새 파일 만들기 바로 가기 개방형 Open_File.setAccelerator (swt.ctrl + 'O'); // 파일을 저장 SARTCUT UNDO.SETACCELERATOR (swt.ctrl + 'z'); // 바로 가기 컷을 취소합니다. SetAccelerator (swt.ctrl + 't'); // 바로 가기 COPY.SETACCELERATOR (SWT.CTRL + 'C')를 자릅니다. // 바로 가기 페이스트를 복사합니다. SetAccelerator (swt.ctrl + 'v'); // 바로 가기 키 삭제를 붙여 넣습니다 .setAccelerator (swt.del); // 바로 가기 키 찾기 삭제 .setAccelerator (swt.ctrl + 'f'); // 바로 가기 키 찾기 찾기 fink_next.setaccelerator (swt.f3); // 다음 바로 가기 키를 찾으십시오. // 바로 가기 키를 교체합니다. go_to.setaccelerator (swt.ctrl + 'g'); // 바로 가기 키로 이동하여 selectAll.setAccelerator (swt.ctrl + 'a'); // 모든 바로 가기 키 showdate.setaccelerator (swt.f5); // 타임 바로 가기 키 표시
4. 이벤트 청취 함수 추가 (1) 파일 클래스
파일의 각 메뉴에 이벤트 청취 기능 추가
1. "종료"메뉴 청취 이벤트를 추가하십시오
기능 설명 : 응용 프로그램을 종료하기 위해이 메뉴를 트리거하는 구현은 비교적 간단합니다. 시스템 기능 시스템을 호출하십시오 .exit (0); 설계 모드에서 "Time/Date (F5)"구성 요소를 클릭 한 다음 "이벤트 표시"-> 선택-> WidgetSelected를 클릭하십시오.
이벤트 코드는 다음과 같습니다.
quit.addselectionListener (새 selectionAdapter () { / *** "종료"메뉴의 청취 이벤트 추가* 기능 설명 :이 메뉴 트리거* / public void widgetSelected (selectionEvent e) {System.Exit (0);});그러나 사실이 간단합니까? 실제로, 클릭하여 종료 한 다음 직접 종료 할 수있는 경우에는 그렇지 않습니다. 실제 메모장을 종료 할 때 여전히 힌트가 있으므로 개선 된 코드는 다음과 같습니다.
public void diyquit () { / *** 함수를 종료 할 때는 저장 해야하는지* / 문자열 팁을 저장 해야하는지 결정하십시오. System.out.println (util.shell.getText (). getText ()); if (util.shell.filedir! = null || util.shell.getText (). getText ()! = "") {// 파일 디렉토리가 비어 있지 않으므로 열린 파일이 있음을 의미합니다. (util.shell.filedir == null) {tips = "파일의 제목없는 텍스트가 변경되었습니다. /n"+"파일을 저장 하시겠습니까?"; } else {tips = "file" + util.shell.filedir + "텍스트"가 변경되었습니다. /n "+"파일을 저장 하시겠습니까? "} int n = joptionpane.showconfirmdialog (null, 팁,"notepad ", joptionpane.yes_no_cancel_option); if (n == 0) {// yes return 1 cenfer 2 savemethod savemethod = new SaveMethod (); 파일을 열면 (n == 1) {// return.exit (0) {// return return.exit (0); tips = "파일의 제목없는 텍스트가 변경되었습니다. /n "+"파일을 저장 하시겠습니까? "; int n = joptionpane.showconfirmdialog (null, 팁,"notepad ", joptionpane.yes_no_cancel_option); if (n == 0) {// yes return 1 cance 2 savemethod savmethod = new SaveMethod (savememethod); 파일을 엽니 다.} else (n == 1) {// if (n == 2) {// return};다음 청취 이벤트에서 각 작업을 함수로 정의합니다. 청취 이벤트 추가 방법은 첫 번째 단계와 동일합니다. 특정 구현 방법은 다음과 같습니다.
2. 이벤트를 들으려면 "저장"메뉴를 추가하십시오
함수 설명 :이 메뉴를 트리거하면 창으로 저장이 팝업되고 파일을 다른 곳에서 저장합니다. 코드 재사용을 용이하게하려면 코드를 캡슐화하여 메소드에 저장하고 코드를 다음과 같이 호출하십시오.
public void saveas () { / *** 호출을 용이하게하기 위해이 방법으로 캡슐화하십시오* / filedialog dialog = new FileDialog (util.shell.shell, swt.save); dialog.setFilterPath (system.getProperty ( "c : // documents and settings")); // 기본 경로를 열기 대화로 설정합니다. // 열린 파일의 확장자를 설정합니다. // 드롭 다운 박스 문자열 파일 = dialog.open에 표시된 확장자 이름을 설정합니다. // 창을 열고 사용자가 선택한 파일 디렉토리로 돌아가서 (file! = null) {util.shell.filedir = file; // 파일 디렉토리를 저장하고 (file! = null) {util.shell.shell.settex (new file.settext (new file)를 사용합니다. file.trim ())). getName ()); // 파일 이름 (경로 제외)을 가져 오려면 제목 filewriter filewriter를 설정합니다. try {filewriter = new filewriter (파일); BufferedWriter out = New BufferedWriter (filewriter); out.write (util.shell.getText (). getText ()); out.close (); filewriter.close (); } catch (ioexception e1) {e1.printstacktrace (); }}}3. "저장"메뉴 청취 이벤트를 추가하십시오
함수 설명 : "저장"메뉴가 트리거되면 파일 저장 창이 팝업 된 다음 디렉토리를 선택하고 파일 이름을 입력하여 저장하십시오. 저축의 논리와 관련하여, 나는 여기서 저장에 대해 이야기해야합니다. 처음에는 현재 문서가 저장되었는지 또는 저장되었는지 여부를 결정하는 방법에 대해 생각하고있었습니다. 나중에, 나는 데스크탑 메모장을주의 깊게 관찰했고, Save and Save에 의해 대화 상자가 튀어 나왔다는 것을 알았습니다. 판단이 다음과 같이 저장 될지 여부를 결정하기 위해 약간의 차이 만 있으면됩니다. 저장된 경우 저장된 경우 파일러드가 존재한다는 의미이며 저장된 기능을 직접 호출 할 수 있습니다. Filedir가 존재하지 않으면 파일이 새로 열리고 경로가 아직 결정되지 않았으므로 양식으로 저장하기 위해 점프하십시오.
먼저, 글로벌 변수 문자열 filedir = null을 정의하십시오. 비어 있으면 할당하면 모든 파일이 기본적으로 저장되지 않습니다. 그런 다음 파일을 열거 나 파일로 저장하든 파일이있는 디렉토리 (파일 이름 및 접미사 이름 포함)가 FiledIR에 기록되며 최종적으로 저장 이벤트에서 FiledIR이 비어 있는지 확인합니다.
코드는 다음과 같습니다.
public void save () { / *** 파일 저장* / if (util.shell.filedir! = null) {// 파일에 디렉토리가 있고 저장시 직접 저장을 의미하며 util.shell.shell.settext를 팝업 할 필요가 없습니다 ((새 파일 (util.shell.filedir.trim ()). // 제목 filewriter filewriter를 설정하려면 파일 이름 (경로 제외)을 가져옵니다. try {filewriter = new filewriter (util.shell.filedir); BufferedWriter out = New BufferedWriter (filewriter); out.write (util.shell.getText (). getText ()); out.close (); filewriter.close (); } catch (ioexception e1) {e1.printstacktrace (); }} else {// 그렇지 않으면 절대 저장되지 않은 다음 Window Saveas ()로 저장하십시오. }}4. "열린"메뉴 청취 이벤트를 추가하십시오
기능 설명 : "열기"메뉴가 트리거되면 파일 열기 창이 팝업 된 다음 파일을 선택합니다. 코드를 재사용하기 위해 오프닝 메소드는 다음과 같이 기능 코드로 캡슐화됩니다.
public void openFile () {if (util.shell.filedir! = null || util.shell.getText ()! = ")) {문자열 팁 ="파일 " + util.shell.filedir +"텍스트 "가 변경되었습니다. /n "+"파일을 저장 하시겠습니까? "; int n = joptionpane.showconfirmdialog (null, 팁,"notepad ", joptionpane.yes_no_cancel_option); if (n == 0) {// yes return 1 cance 2 savemethod savmethod = new Savethod (); 파일을 열고} else (n == 1) {// return no} else (n == 2) {// return return} {filedialog contalog (util.shell.shell, swt.open) (System.setfroperty); dialog.setfilterextensions (new String [] { "*.txt", "*.*"}); // 열린 파일의 확장자 설정 대화 상자 (새 문자열 [] { "텍스트 파일 (*.txt)", "모든 파일 (*.*)"}); 사용자가 선택한 파일 (file == null) {return.shell.filedir = file (file.trim ()). bufferedReader는 new bufferedReader (filereader) s = null.getText ( ""); e1.printstacktrace ()} catch (filenotfoundexception e2) {e2.printstacktrace (}};5. "새로운"메뉴 청취 이벤트를 추가하십시오
기능 설명 : 이벤트가 트리거되면 새 창을 만듭니다. 현재 파일이 저장되지 않으면 저장하라는 메시지가 표시됩니다. 그렇지 않으면 새 페이지가 생성됩니다.
새 페이지를 생성하는 원칙 : 제목을 다시 시작하고, 제출기를 초기화하고, 편집 도메인을 초기화합니다. 여기에서 코드를 추출하여 새 파일을 메소드로 열어 다음과 같이 코드를 호출하는 것이 편리합니다.
void OpenNewFile () {if (util.shell.filedir! = null || util.shell.getText (). getText ()! = "") {String 팁 = "파일" + util.shell.filedir + "텍스트가 변경되었습니다. /n "+"파일을 저장 하시겠습니까? "; int n = joptionpane.showconfirmdialog (null, 팁,"notepad ", joptionpane.yes_no_cancel_option); if (n == 0) {// yes return 1 cance 2 savemethod savemethod = new savemethod (); if (n == 1) {// if (n == 2) {// return return t = "unt title (" + ++ util.shell.shell.shell.settext (t); util.shell.filedir = {unt itil.shell.settext (t); 초기화}4. 이벤트 청취 기능 추가 (2) 편집 클래스
각 메뉴에 대한 이벤트 청취 기능을 추가하십시오
1. 이벤트를 들으려면 "시간 표시"메뉴를 추가하십시오
기능 설명 : 이벤트가 트리거되면 편집 상자의 커서에 시스템 시간이 표시됩니다. 현재 시스템 시간을 얻고 문자열 유형으로 변환 한 다음 텍스트를 호출하여 편집 상자 커서 후 시간을 표시합니다.
1.1 이벤트 청취 함수 추가 시스템의 현재 시간 방법을 얻으려면 : SimpleDateFormat 객체를 호출하여 시간을 포맷 한 다음 날짜를 호출하여 시간을 얻습니다.
처음의 문제 : 매번 컨텐츠의 끝에만 추가 할 수 있습니다. 신중하게 생각하면 현재 커서 위치를 찾은 다음 커서 후 커서 + 층 앞에 문자열을 분과 한 다음 함께 표시해야합니다.
나는 오랫동안 검색했고 getCaretPosition ()이 방금 플라스틱으로 돌아 왔다는 것을 알았습니다. 이는 현재 커서 위치를 얻는 것입니다. 예상대로 시도했습니다. 다음은 문자열 스 플라이 싱 기술을 구현하는 것입니다.
반환 된 새 문자열.
발생하는 문제 : 스 플라이 싱 후 출력이 직접 생성되어 이전 컨텐츠가 나중에 새로운 문자열로 스 플라이싱됩니다. 오랜 시간이 지나면 settext (string) 메소드를 호출해야한다는 것을 알았습니다. 출력 전에 먼저 이전 편집 상자에 표시된 컨텐츠를 지우십시오. 최종 청취 기능 내용은 다음과 같습니다.
showdate.addselectionListener (새로운 selectionAdapter () { /*** "시간 및 날짜"메뉴의 청취 이벤트 추가 추가 :이 메뉴를 트리거 하여이 메뉴를 트리거하여 편집 상자* /public void widgetSelected (int index = getText (); getCaretPosition (); box // simpledateformat df = 새로운 simpledateformat ( "yyyy-mm-dd hh : mm : ss"; getText (). setText ( "");스 플라이 싱 스트링 함수는 다음과 같습니다.
public String insertstring (String S1, String S2, Int Index) { / *** 문자열의 삽입 함수 구현* 전달 된 세 가지 매개 변수는 다음과 같습니다. 원래 문자열, 삽입 할 문자열 및 삽입 위치* 삽입 된 문자열* / return S1.substring (0, 색인) + S1.S1.S1.substring (s1.length); }2. 이벤트를 들으려면 "모든 선택"메뉴를 추가하십시오.
기능 설명 :이 메뉴를 트리거하여 모든 텍스트 필드 문자열을 선택합니다.
Java의 편집 상자에는 실제로 모든 것을 선택하는 기능이 있습니다. 하하, 당신은 text.selectall ()을 직접 호출 할 수 있습니다. 기성품 복사 및 붙여 넣기도있는 것으로 추정됩니다. 나는 거의 잊었다. 모든 것을 선택한 후에는 선택한 컨텐츠가 비어 있는지 확인해야합니다. 비어 있지 않은 경우 다음과 같이 모든 코드를 선택적으로 선택하려면 "삭제"및 "잘라"버튼을 설정해야합니다.
selectAll.AddSelectionListener (새 selectionAdapter () { /*** "All All Select"메뉴* 기능 설명 : 텍스트 필드에서 모든 텍스트를 선택하려면 메뉴를 트리거하고 "삭제"및 "잘라"버튼을 선택 사항* /public void e) {getText () {getText (); // 클릭으로 클릭하십시오. if (getText ().3. "잘라"메뉴 모니터링 이벤트를 추가하십시오
함수 설명 :이 메뉴를 트리거하고 다음과 같이 편집 상자의 cut () 메소드를 직접 호출하는 편집 상자의 cut () 메소드 코드를 실현하십시오.
cut.addselectionListener (new selectionAdapter () { / *** "컷"메뉴의 청취 이벤트 추가* 함수 설명 : 선택한 문자열을 트리거하여 선택한 문자열* / public void widgetSelected (selectionEvent e) {getText (). cut ();}});4. "붙여 넣기"메뉴 모니터링 이벤트를 추가하십시오
함수 설명 :이 메뉴를 트리거하고 클립 보드 내용을 붙여서 편집 상자를 직접 호출하는 페이스트 () 메소드 코드를 구현하십시오.
paste.addselectionListener (새 selectionAdapter () { / *** "페이스트"메뉴의 청취 이벤트 추가* 함수 설명 : 클립 보드의 내용을 편집 상자에 붙여 넣기 위해이 메뉴를 트리거하십시오.5. 이벤트를 들으려면 "복사"메뉴를 추가하십시오
함수 설명 :이 메뉴를 트리거하고 선택한 내용을 다음과 같이 복사하여 편집 상자를 직접 호출하는 COPY () 메소드 코드를 구현하십시오.
copy.addselectionListener (new selectionAdapter () { / *** "컷"메뉴의 청취 이벤트 추가* 기능 설명 : 선택한 문자열을 자르려면이 메뉴를 트리거* / public void widgetSelected (selectionEvent e) {text.copy ();}6. "취소"메뉴 모니터링 이벤트를 추가하십시오
기능 설명 :이 메뉴를 트리거하고 현재 작업을 취소 하고이 기능과 관련된 알고리즘을 취소하는 것이 복잡합니다. 당분간,이 메모장은 버튼 실행 취소 메소드를 지원하지 않지만 마우스 오른쪽 버튼 클릭 실행 취소를 지원합니다 (Java 텍스트 구성 요소는 마우스 오른쪽 클릭 실행 취소가 저에 의해 작성되지 않으면 제공됩니다).
7. 이벤트를 들으려면 "찾기"메뉴를 추가하십시오
기능 설명 :이 메뉴를 트리거하고 검색 작업을 수행하십시오
find.addselectionListener (새 selectionAdapter () { / ** * 검색 함수를 추가하기위한 대화 상자, 찾아야하는 다음 대화 상자가 팝업 된 다음 검색의 관련 내용을 입력하십시오 * / public void widgetSelected (selectionEvent e) {findwindow fw = new findwindow (shell, swt.dialog_trim););4. 이벤트 청취 기능 추가 (3) 보조 클래스
메뉴 바의 여러 메뉴 이벤트 외에도 키보드 이벤트를 들어야합니다. 즉, 키보드에 텍스트 필드를 입력하면 관련 메뉴의 표시가 트리거됩니다. 다음 장소를 취소, 검색, 찾기 및 찾기이 4 가지 메뉴를 교체하여 선택 사항으로 설정하십시오.
1. 텍스트 필드 듣기
getText (). addKeylistener (새 KeyAdapter () {/*** 키보드 청취 이벤트 설정* 키보드 타이핑이있는 경우 표시되기 위해 관련 버튼을 설정해야합니다. 다음 장소*/public void kyyReleased (keyevent e) {if (getText ()! = "). find_next.setenabled (true) {found.setenabled.2. "글꼴"메뉴의 이벤트 청취 기능 구현
코드는 다음과 같습니다.
setfont.addselectionListener (새로운 selectionAdapter () { / *** 글꼴의 청취 이벤트 설정* / public void widgetSelected (seleplyEvent e) {fontdialog fontdialog = new fontDialog (shell, swt.none); font oldfont = getText (). fontdialog.getData (fontdata) null) {OldFont.dispose ();다섯. 태그 설정을 형성하십시오
기본 기능을 테스트 클래스로 추출하고 메모장 형식의 제목을 매개 변수화하고 초기 레이블을 기본 기능으로 전달합니다.
매개 변수 생성자는 class main_window 양식으로 정의되며 전달 된 매개 변수는 다음과 같이 제목 이름 생성자입니다.
main_window (String titlename) { / *** 매개 변수 구성과 함께 전달 된 매개 변수는 파일 이름* / this.titlename = titlename입니다. } 참고 : 소프트웨어의 제목은 다음과 같습니다. 제목없는 메모장 파일을 열 때 제목은 열린 파일 이름입니다. 저장된 파일 이름을 저장할 때 제목은 저장된 파일 이름입니다. 파일 이름을 저장할 때 저장된 파일 이름입니다. 파일 이름을 얻는 방법 (경로 포함)은 다음과 같습니다.
shlnotepad.settext ((새 파일 (filedir.trim ()). getName ()); // 제목을 설정하려면 파일 이름 (경로 제외)을 가져옵니다.
단순화를 위해 문장 코드로 약칭했습니다.
프로그램 아이콘을 설정하고 프로젝트 디렉토리에 넣으면 사용하기 위해 직접 소개 할 수 있습니다.
사고 : 사용자에게 저장 여부를 제기 할 때 경로가 비어 있는지 확인할 수는 없습니다. 키보드가 누락되었는지, 즉 변경 사항이 있는지, 콘텐츠가 변경되었는지 여부를 확인해야합니다 (직접 삭제하기 위해 마우스 오른쪽 버튼을 클릭하고 키보드를 통과하지 못했습니다).
6. 다른 세 가지 대화 상자의 정의
1. 대화 상자를 찾으십시오
또한 새로 생성 된 패키지를 마우스 오른쪽 버튼으로 클릭하십시오. New-> Other-> Windowbuilder-> SWT Designer-> SWT-> 대화 상자 FindWindow
결과는 다음과 같습니다.
이 창은 여기에서 공유됩니다. 검색, 교체 및 다음 장소를 검색합니다. 검색 내용 편집 상자가 클릭 할 버튼을 트리거 할 수 있습니다. 검색 내용 편집 상자와 교체 상자는 비어 있지 않습니다. 교체 기능을 트리거 할 수 있습니다. 다음 장소 검색 목록과 다음 장소를 검색 할 대체 방법 본문은 다음과 같습니다.
아이디어 : 먼저 메인 창에서 모든 문자열을 가져온 다음 검색 해야하는 컨텐츠를 가져오고 Java가 제공 한 검색 문자열 함수를 직접 호출하여 시작 인덱스를 얻은 다음 검색 내용을 렌더링 해야하는 문자열 길이에 검색 내용을 추가 한 다음 기본 창의 렌더링 함수를 호출 한 다음 표시합니다.
특정 코드는 다음과 같습니다.
find_next.addselectionListener (new selectionAdapter () {@override public void widgetSelected (selectionEvent e) {parest = util.shell.getText_1 (); // 메인 창자 텍스트 상자 내용을 가져옵니다. true index = parest.IndexOf (textContent.getText (), index); joptionpane.showMessageDialog (null, "+"+textContent.GetText ()+"/" ","NotePad ", int end = index+textContent.getText (); index+textContent.getText (). length ();교체 버튼은 다음과 같이 이벤트를 트리거합니다.
ReplaceBtn.addsElectionListener (새 selectionAdapter () { /*** 교체 버튼 이벤트* /public void widgetSelected (selectionEvent e) {parest = util.shell.getText_1 (); // 메인 윈도우 텍스트 상자 내용 parest = parest.replacefirst (textContent.getText (), replacetext (); util.shell.showtext (parest)};2. Aboutauthor 대화 상자 설정
이 대화 상자의 생성은 검색 대화 상자와 동일합니다. Aboutauthor의 이름을 지정하십시오. 특정 렌더링은 다음과 같습니다.
이 대화 상자에는 관련 알고리즘이 포함되지 않습니다. 3 개의 Jlabel 태그를 추가하고 3 개의 문장을 입력하십시오.
3. GO_TO 대화 상자 설정
대화 상자를 만드는 방법에 대해서는별로 말하지 않을 것입니다. 특정 렌더링은 다음과 같습니다.
코드 구현은 다음과 같습니다.
Queding.addsElectionListener (새로운 selectionAdapter () { / *** 특정 줄로 점프를 확인하십시오* / public void widgetSelected (selepliceEvent e) {int n = integer.parseint (goto_line.getText ()); goto_line.settext ( "" " + n +" ");기본 창에서 gotooneline () 메소드를 호출하십시오
public void gotooneline (int row) {getText (). setSelection (행); }이 시점에서 전체 메모장의 일반적인 기능이 완료되었습니다.
7. 요약
글쓰기 시작부터 최종 완료까지 약 2-3 일이 걸렸습니다. 관련 알고리즘을 많이 배웠습니다. Java 프로그래밍은 매우 편리합니다. 많은 방법이 직접 구현할 필요가 없습니다. 직접 전화 할 수 있습니다. 그러나 Java는 또한 많은 단점이 있습니다. 예를 들어, Java가 소유 한 대화 상자를 사용하여 창을 닫았습니다. 결과는 특히 붙어있었습니다. If you are interested, you can customize the exit dialog box. Just change the included three-choice dialog box to a custom dialog box. At the same time, the previous one was only for learning and did not consider the efficiency of the algorithm. For example, opening a file operation, it only implemented the function, but did not consider the timeliness of the algorithm. The method used in this example is to read the file by line. You can try to open a text document with thousands of lines by yourself, and you can feel the importance of the algorithm. Also, upward search has not been implemented. The preliminary idea is: find the coordinates that need to be found, and then start to go back from the position of the coordinates you are looking for, and invert the search content, and then call the string search function that comes with Java.
예를 들어:
母串为“ab记事本def3g” 需要从”3”这个字符串开始向前查找”记事本”字符串,可将母串中”3”字符串所在位置之前的字符串”ab记事本def”完全倒置为”g3fed本事记ba” 将查找内容也倒置成”本事记” 再调用Java内带的字符串查找函数查找所在位置,再还原即可。
以上就是手把手编写记事本的详细步骤,Java基于SWT插件编写桌面记事本应用程序,希望对大家的学习有所帮助。