2013-10-22 3 views
-1

그것에 대해 무뚝뚝하게하려면 실제로 사용하는 방법에 대한 도움을 찾고 있습니다. 우리는 수업에서 이것을 사용하여 작업을 시작했습니다. 그러나 새로운 선생님은 가르치지 않으므로, 정말 고심하고 있습니다. 그래서 윈도우 빌더를 사용하여 기본 JFrame을 설정하고, 텍스트 파일을 문자열로 열어 텍스트 공간에 넣은 다음 텍스트에서 문자열을 찾고 변경할 수 있어야합니다. 내가 아래에있는 코드를 붙여 넣을 것입니다. 누구든지이 작업을 수행하는 방법을 설명 할 수 있다면 정말 감사 드리겠습니다. :)처음으로 JFileChooser를 사용하는 데 도움이 필요합니다.

import java.awt.BorderLayout; 
import java.awt.EventQueue; 

import javax.swing.JFileChooser; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.border.EmptyBorder; 
import java.awt.TextArea; 
import javax.swing.JTextField; 
import javax.swing.JButton; 
import java.awt.event.ActionListener; 
import java.awt.event.ActionEvent; 

import java.io.File; 
import javax.swing.filechooser.*; 
import java.awt.event.MouseAdapter; 
import java.awt.event.MouseEvent; 


public class task1 extends JFrame { 

    private JPanel contentPane; 
    private JTextField findTxtBox; 
    private JButton findBtn; 
    private JTextField replaceTxtBox; 
    private JTextField fileTxtBox; 
    private JButton openBtn; 

    /** 
    * Launch the application. 
    */ 
    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       try { 
        task1 frame = new task1(); 
        frame.setVisible(true); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 

    /** 
    * Create the frame. 
    */ 
    public task1() { 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setBounds(100, 100, 450, 312); 
     contentPane = new JPanel(); 
     contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
     setContentPane(contentPane); 
     contentPane.setLayout(null); 

     TextArea textArea = new TextArea(); 
     textArea.setBounds(10, 45, 380, 160); 
     contentPane.add(textArea); 

     findTxtBox = new JTextField(); 
     findTxtBox.setBounds(80, 211, 236, 20); 
     contentPane.add(findTxtBox); 
     findTxtBox.setColumns(10); 

     findBtn = new JButton("Find"); 
     findBtn.setBounds(326, 210, 89, 23); 
     contentPane.add(findBtn); 

     JButton btnReplace = new JButton(" Replace"); 
     btnReplace.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent arg0) { 
      } 
     }); 
     btnReplace.setBounds(326, 240, 89, 23); 
     contentPane.add(btnReplace); 

     replaceTxtBox = new JTextField(); 
     replaceTxtBox.setColumns(10); 
     replaceTxtBox.setBounds(80, 242, 236, 20); 
     contentPane.add(replaceTxtBox); 

     fileTxtBox = new JTextField(); 
     fileTxtBox.setColumns(10); 
     fileTxtBox.setBounds(80, 11, 236, 20); 
     contentPane.add(fileTxtBox); 

     final JFileChooser fc = new JFileChooser(); 
     fc.setFileFilter(new FileNameExtensionFilter("Text Files", "txt")); 
     fc.removeChoosableFileFilter(fc.getAcceptAllFileFilter()); 

     openBtn = new JButton("Open File"); 
     openBtn.addMouseListener(new MouseAdapter() { 
      @Override 
      public void mouseClicked(MouseEvent arg0) { 
       fc.showOpenDialog(null); 
      } 
     }); 
     openBtn.setBounds(326, 10, 89, 23); 
     contentPane.add(openBtn); 
    } 
} 
+1

'openBtn'에서 [MouseListener']를 사용하지 말고 [ActionListener] (http://docs.oracle.com/javase/7/docs/api/java/awt/event/ActionListener.html)를 사용하여 처리하십시오 버튼을 눌렀을 때의 이벤트. [버튼, 체크 박스 및 라디오 버튼 사용 방법] (영문) (http://docs.oracle.com/javase/tutorial/uiswing/components/button.html#abstractbutton) – dic19

답변

3

객체가 문자열로 텍스트 파일을 열고 텍스트 공간에 넣어, 다음 텍스트 문자열을 찾아서 변경할 수 할 수있을 것입니다.

파일 선택기를 사용하는 것보다 훨씬 많은 작업이 필요합니다. Swing 튜토리얼의 How to Use File Choosers에있는 섹션을 읽고 시작하는 것이 좋습니다.

파일 선택기는 파일을 읽지 않고 파일 이름을 가져 오는 데 사용됩니다. 그래서 다음에는 JTextArea (TextArea가 아님)을 사용하여 읽은 파일의 텍스트를 표시 할 것을 제안합니다. 이 작업을 수행하려면 read(...) JTextArea 메서드를 사용할 수 있습니다.

모든 텍스트 구성 요소에는 getText() 메소드가 있으며 텍스트 가져 오기를 사용할 수 있습니다. 그런 다음 원하는 문자열을 검색하고 replace() JTextArea 메서드를 사용하여 텍스트를 바꿀 수 있습니다.

마지막으로 setBounds() 메서드를 사용하여 구성 요소의 크기/위치를 설정하면 안됩니다. Layout Managers을 사용하고 있어야합니다. Swing 튜토리얼에는 레이아웃 관리자 사용에 관한 섹션도 있습니다.

+0

감사합니다. 독서. 나도 몰랐다. 우리는 "가정교사"가 게으른 거시기 인 것처럼 보이지 않았다. 나는 그 일을하는 법을 짐작하려고했다. 어쨌든 응답 주셔서 감사합니다 :) –

+0

아, JFileChooser는 말했듯이 디렉토리에서 이름을 가져 오는 방법 일 뿐이지 만 파일을 만들고 filechooser.getSelectedFile()로 설정 한 다음 BufferedReader/FileReader 그것을 문자열로 만들고 텍스트 영역에 표시합니다. 정보를 전달해 주셔서 감사합니다, 나는 오라클 사이트를 시작으로해야만했을 것 같아요. Appriciate 당신의 도움 :) –

관련 문제