Java를 사용하여 Windows와 같은 TXT 편집 소프트웨어를 만들고 싶습니다. 글꼴 설정 탭이 포함됩니다. 나는 오랫동안 온라인으로 검색했지만 찾을 수 없었습니다. 나는 화가 났고 나 자신을 썼다. 공유하기 위해 여기에 게시하겠습니다. 다음에 그런 문제가 발생하면 코드를 직접 쓸 필요가 없습니다!
패키지 실험; import java.awt.*; import java.awt.event.actionevent; import java.awt.event.actionlistener; import java.awt.event.mouseadapter; import java.awt.event.mouseeevent; import javax.swing. 클래스 fontformat은 jdialog {private jlabel namelb; 개인 Jlabel Stylelb; 개인 Jlabel Sizelb; 개인 jlabel preslb; 개인 jtextfield nametx; 개인 jtextfield styletx; 개인 Jtextfield Sizetx; 개인 Jtextfield Prestx; 개인 JList Namelt; 개인 JLIST 스타일 링트; 개인 JLIST SIZELT; 개인 jscrollpane jscrollpane1; 개인 jscrollpane jscrollpane2; 개인 jscrollpane jscrollpane3; 개인 JBUTTON 승인; 개인 Jbutton 취소; 개인 Jbutton 선택; 개인 jradiobutton [] 언어 = 새로운 jradiobutton [2]; 개인 Buttongroup Languageg; 개인 문자열 slanguage [] = {new String ( "li tao"), 새 문자열 ( "abc")}; 개인 정적 JFrame 프레임; Public Font Font, NewFont; // 글꼴 클래스 비공개 색상; // 색상 클래스 컬러 NewColor; private jfilechooser filechoose = new JfileChooser (); // 파일 선택 클래스 인스턴스 개인 JDialog ColorDlg; // 색상 대화 개인 jcolorchooser colorchoose = new jcolorchooser (); // 색상 선택 클래스 인스턴스 개인 그래픽 환경; //이 클래스는 또한 시스템 글꼴을 얻습니다. private String [] fontnameset; // font 'logical name'set // font 'style'set private string [] fontstyleset = { "일반", "틸트", "볼드", "틸트 볼드"}; // 우연한 글꼴 스타일 '스타일'세트 개인 정수 세트 [] fontcon = {font.plain, font.italic, font.bold, font.bold | font.italic}; // font 'size'set private string [] fontsizeet = { "6", "7", "8", "9", "10", "11", "12", "14", "16", "18", "20", "24", "26", "28", "36", "48", "72"}; public static void main (String args []) {// main 함수 fontformat a = new fontformat (); A. 세트 Visible (true); } public fontformat () {// 매개 변수가없는 생성자 슈퍼 (프레임, "li tao - 폰트 설정 창", true); 프레임 = 새로운 jframe (); initgui (); } public fontformat (jframe frame) {// 매개 변수 함유 생성자 Super (프레임, "Li Tao-Font 설정 창", true); this.frame = frame; // 상위 창에 공개 글꼴 객체가 있어야합니다. // setalwaysontop (true); initgui (); } private void initgui () {// 인터페이스 초기화 try {getContentPane (). setLayout (null); Environment = GraphicsEnvironment.getLocalGraphicsEnvironment (); // GraphicsEnvironment는 인스턴스를 인스턴스화 할 수없는 추상 클래스이며 인스턴스를 사용하여 FontNameset = Environment.getAvailableFamilyNames (); // System Font AddMenu (); // inittfont (); // 초기 FONTFONT (//); setsize (380, 337); setDefaultCloseOperation (WindowConstants.dispose_on_close); setwindowpos (); // 윈도우 스크린 세트 레서질 가능 (false); // size unmutable} catch (예외 e) {e.printstacktrace (); }} private void initfont () {// 글꼴 초기화 // 기본 글꼴 형식을 부모 창 글꼴 반대편에있는 글꼴 형식으로 설정합니다. if (frame.getfont () == null) {nametx.settext (fontnameset [0]); styletx.settext (fontstyleset [0]); sizetx.settext ( "12"); namelt.setselectedValue (fontnameset [0], true); Stylelt.SetSelectedIndex (0); Sizelt.SetSelectedValue ( "12", True); font = new Font (FontNameset [0], FontCon [0], 12); NewFont = font; // 원래 글꼴 형식 저장 prestx.setfont (font); // joptionpane.showmessagedialog (null, "CCAC"); } else {int idxstyle = 0; for (int i = 0; i <fontcon.length; i ++) {if (fontcon [i] == frame.getfont (). getStyle ()) idxstyle = i; } nametx.settext (frame.getfont (). getName ()); // 텍스트 변경 styletx.settext (fontstyleset [idxStyle]); sizetx.settext ( "" + frame.getfont (). getsize ()); namelt.setselectedValue (frame.getfont (). getName (), true); // Stylelt.SetSelectedIndex (idxStyle)를 표시하도록 목록을 변경합니다. sizelt.setselectedValue ( "" + frame.getfont (). getsize (), true); font = new Font (Fontnameset [0], Fontcon [0], 12); // 현재 형식 저장 NewFont = font; // 원래 글꼴 형식 저장 Prestx.setfont (font); // 미리보기에서 현재 모드로 설정 lables----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- nameLb = new JLabel(); getContentPane (). add (namelb); namelb.settext ( "font :"); namelb.setbounds (10, 14, 120, 26); namelb.setfont (new java.awt.font ( "Simsun", 1, 14)); Stylelb = New Jlabel (); getContentPane (). Add (Stylelb); Stylelb.settext ( "font :"); Stylelb.SetBounds (151, 14, 120, 23); Stylelb.setfont (new java.awt.font ( "Simsun", 1, 14)); Sizelb = New Jlabel (); getContentPane (). add (sizelb); Sizelb.settext ( "size :"); Sizelb.SetBounds (275, 14, 79, 24); Sizelb.setfont (New java.awt.font ( "Simsun", 1, 14)); preslb = new Jlabel (); getContentPane (). add (preslb); preslb.settext ( "미리보기 :"); preslb.setbounds (151, 150, 120, 80); preslb.setfont (new java.awt.font ( "Simsun", 1, 14)); // 4个textfield--------------------------------------------------------------------------------- nameTx = new JTextField(); nametx.seteditable (false); getContentPane (). add (nametx); nametx.setbounds (10, 42, 120, 22); styletx = 새로운 jtextfield (); styletx.seteditable (false); getContentPane (). add (styLlex); styletx.setbounds (151, 42, 100, 21); sizetx = 새로운 jtextfield (); sizetx.seteditable (false); getContentPane (). add (sizetx); Sizetx.SetBounds (275, 42, 79, 22); prestx = 새로운 jtextfield (); prestx.seteditable (false); getContentPane (). add (prestx); prestx.setbounds (151, 200, 203, 61); prestx.settext (slanguage [1]); // 3个下拉条--+监听----------------------------------------------------------------------------- jScrollPane1 = new JScrollPane(); getContentPane (). add (jscrollpane1); jscrollpane1.setbounds (10, 74, 120, 210); {ListModel fontnamemodel = 새로운 DefaultComboBoxModel (fontnameset); namelt = new Jlist (); jscrollpane1.setViewPortView (Namelt); namelt.setmodel (fontnamemodel); Namelt.SetBounds (274, 193, 90, 86); namelt.setborder (BorderFactory .CreateetChedborder (Bevelborder.Lowered)); namelt.addmouseListener (new MouseAdapter () {public void mouseclicked (mouseevent evt) {nameltmouseclicked (evt);}}); } jscrollpane2 = new jscrollpane (); getContentPane (). add (jscrollpane2); jscrollpane2.setbounds (151, 74, 100, 103); {ListModel FontStyleModel = 새로운 DefaultComboBoxModel (fontstyleset); Stylelt = new Jlist (); jscrollpane2.setViewPortView (스타일 텔); Stylelt.SetModel (FontStyleModel); Stylelt.SetBounds (310, 215, 70, 102); Stylelt.setborder (BorderFactory .CreateetChedborder (Bevelborder.Lowered)); Stylelt.addmouseListener (new MouseAdapter () {public void mouseclicked (mouseevent evt) {StyleltMouseClicked (evt);}}); } jscrollpane3 = new jscrollpane (); getContentPane (). add (jscrollpane3); jscrollpane3.setbounds (275, 75, 79, 100); {ListModel fontsizemodel = 새로운 DefaultComboBoxModel (fontsizeet); Sizelt = New Jlist (); jscrollpane3.setViewPortView (Sizelt); Sizelt.SetModel (FontSizemodel); Sizelt.SetBounds (300, 218, 54, 102); Sizelt.Setborder (BorderCactory .CreateEtchedBorder (BevelBorder.Lowered)); sizelt.addmouselistener (new MouseAdapter () {public void mouseclicked (mouseevent evt) {SizeltMouseClicked (evt);}}); }// ------------------------------------------------------------------------------------- // 中英选项(--------------------------------------------------------------------------------- languageg = new ButtonGroup(); language[0] = new JRadioButton("中"); getContentPane().add(language[0]); language[0].setSelected(false);// Initialize display 언어 [0]. }}; New Jradiobutton ( "영어"). language.add (언어 [1]) ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- {approveActionPerformed (EVT); }}); // 취소 버튼 취소 = new Jbutton (); getContentPane (). add (취소); 취소 .settext ( "취소"); CANCEL.SETBOUNDS (219, 265, 67, 20); 취소 .setfont (new java.awt.font ( "kaiti_gb2312", 1, 12); cancel.addactionListener (new ActionListener () {public void ActionPerformed (ActionEvent evt) {cancelActionPerformed (EVT);}}); // 색상 선택 버튼 선택 = new Jbutton (); getContentPane (). add (choSe); 선택 .settext ( "색상"); 선택 .SetBounds (287, 265, 67, 20); 선택. chelect.addactionListener (new ActionListener () {public void ActionPerformed (ActionEvent evt) {choseaceceperformed (evt);}}); // ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- (Screensize.Height -Framesize.height) / 2); } private void nameltmouseClicked (mouseevent evt) {// 마우스 클릭 이벤트 nametx.settext (namelt.getSelectedValue (). toString ()); font = new Font (nametx.getText (), font.getStyle (), font.getSize ()); prestx.setfont (font); } private void styleltmouseclicked (mouseevent evt) {// 마우스 클릭 이벤트 문자열 temp = stylelt.getSelectedValue (). toString (); styletx.settext (Temp); int index = 0; while (index <4 &&! fontstyleset [index] .equals (temp)) {index ++; } font = new Font (font.getName (), fontcon [index], font.getSize ()); prestx.setfont (font); } private void sizeltmouseClicked (mouseevent evt) {// 마우스 클릭 이벤트 sizetx.settext (sizelt.getSelectedValue (). toString ()); font = new Font (font.getName (), font.getStyle (), integer.parseint (sizetx.getText ()); prestx.setfont (font); } private void approveActionPerformed (actionEvent evt) {// 버튼 문자열의 트리거 이벤트 결정 = nametx.getText (); int style = fontcon [stylelt.getSelectedIndex ()]; int size = integer.parseint (sizetx.getText ()); font = 새 글꼴 (이름, 스타일, 크기); frame.setfont (font); // 부모 창의 글꼴 개체 NewFont = font; // 원래 저장 형식을 업데이트하여 newColor = color; // 색상을 업데이트 this.dispose (); } private void cancelActionPerformed (ActionEvent evt) {// 취소 버튼 트리거 이벤트 this.dispose (); } private void chooseacctionPerformed (ActionEvent evt) {// 색상 선택 트리거 이벤트 if (colordlg == null) {colordlg = jcolorchooser.createdialog (fontformat.this, "선택", true, colorchoose, new coloroklistener (), null); } colorchoose.setColor (color = prestx.getforeground ()); colordlg.setvisible (true); } class coloroklistener 구현 ActionListener {// 색상 버튼을 다시 작성하십시오. 청취 클래스 오버레이 인터페이스 actionlistener void actionPerformed (ActionEvent e) {color c = colorchoose.getColor (); 색상 = C; prestx.setforeground (c); prestx.repaint (); }}} 효과는 다음과 같습니다.
이 기사가 도움이되기를 바랍니다. Java 모방 Windows Font 설정 탭의 내용을 소개하는 것이 전부입니다. 모두가 우리 웹 사이트를 계속 따르기를 바랍니다! Java를 배우고 싶다면이 웹 사이트를 계속 팔로우 할 수 있습니다.