2014-12-13 3 views
1

내 파일은 1.txt이고 버튼을 누르면 파일이 열리도록 Java를 사용하여 열려고합니다 !!
파일을 열고 단추로 패치 할 actionlistener를 통한 명령이 있습니까 ??
이 자바에서 내 간단한 애플릿 프로그램은 ..
새 창에서 자바의 버튼을 한 번만 클릭하여 파일을 열려고합니다.

import java.awt.*; 
import java.applet.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.io.BufferedWriter; 
import java.io.FileWriter; 
import java.io.PrintWriter; 
import java.util.Scanner; 
import java.util.logging.Level; 
import java.util.logging.Logger; 

public class CalculatorApplet extends Applet implements ActionListener { 

    Button save, view; 
    Label fname, lname, email, city, phno; 
    TextField t, u, v, w, x; 
    Label ans; 
    Scanner sc = new Scanner(System.in); 

    @Override 
    public void init() { 
     setLayout(null); 

     // create label to display enter no 
     fname = new Label("Enter First Name : "); 
     fname.setBounds(10, 50, 100, 20); 

     lname = new Label("Enter Last Name : "); 
     lname.setBounds(10, 70, 100, 20); 

     email = new Label("Enter Email : "); 
     email.setBounds(10, 90, 80, 20); 

     city = new Label("Enter City : "); 
     city.setBounds(10, 110, 80, 20); 

     phno = new Label("Enter Phno : "); 
     phno.setBounds(10, 130, 80, 20); 

     // create textbox for entering number 
     t = new TextField(); 
     t.setBounds(120, 50, 200, 20); 

     u = new TextField(); 
     u.setBounds(120, 70, 100, 20); 

     v = new TextField(); 
     v.setBounds(120, 90, 200, 20); 

     w = new TextField(); 
     w.setBounds(120, 110, 80, 20); 

     x = new TextField(); 
     x.setBounds(120, 130, 80, 20); 

     // create button for finding sqr 
     save = new Button("Save"); 
     save.setBounds(120, 150, 70, 30); 

     // add the action listner on this button 
     save.addActionListener(this); 

     // create button 
     view = new Button("View"); 
     view.setBounds(190, 150, 70, 30); 

     // add the action listner on this button 
     view.addActionListener(this); 

     // add all the components to the frame 
     add(fname); 
     add(lname); 
     add(email); 
     add(city); 
     add(phno); 
     add(t); 
     add(u); 
     add(v); 
     add(w); 
     add(x); 
     add(save); 
     add(view); 

    } 

    @Override 
    public void actionPerformed(ActionEvent e) { 

     String fnme = t.getText(); 
     String lnme = u.getText(); 
     String emal = v.getText(); 
     String cty = w.getText(); 
     String phn = x.getText(); 

     if (e.getSource() == save) { 
      try (PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("1.txt", true)))) { 
       out.println("First Name :" + fnme); 
       out.println("Last Name :" + lnme); 
       out.println("Email Name : " + emal); 
       out.println("City : " + cty); 
       out.println("Contact : " + phn); 
       out.println("----------------------------------------\n"); 
       out.println("----------------------------------------\n"); 
       out.close(); 
       t.setText(""); 
       u.setText(""); 
       v.setText(""); 
       w.setText(""); 
       x.setText(""); 
      } catch (Exception ex) { 
       Logger.getLogger(CalculatorApplet.class.getName()).log(Level.SEVERE, null, ex); 
      } 
     }else if(e.getSource() == view){ 
//   what to type in here???? 
//   needed code here!!! 

        } 
    } 
} 
가 난 그냥 파일을 열려면

, 다른 아무것도 ..

+0

'java.io' 패키지를 보면, 파일을 열거 나 읽고 쓰는 데 필요한 모든 것을 찾을 수 있습니다.'BufferedReader'는'String'을 읽을 수있게 해주는 기본적인 표준입니다. –

+0

'널 (null)'레이아웃 사용을 피하기 위해 픽셀 완벽한 레이아웃은 현대적인 UI 디자인 내 환상입니다. 구성 요소의 개별 크기에 영향을주는 요소가 너무 많습니다. 어느 요소도 제어 할 수없는 요소가 너무 많습니다. Swing은 핵심 레이아웃 관리자와 함께 작동하도록 설계되었으므로 문제가 해결되지 않고 문제가 해결되고 더 이상 수정하지 않아도됩니다. – MadProgrammer

+0

애플릿은 매우 제한적인 샌드 박스에 상주하므로 해당 작업을 수행 할 수 없습니다. 기본 I/O처럼 일반적으로 수행 할 수 있습니다. 자세한 내용은 [애플릿으로 수행 할 수있는 작업 및 수행 할 수없는 작업] (https://docs.oracle.com/javase/tutorial/deployment/applet/security.html)을 참조하십시오. – MadProgrammer

답변

1

하나는 열고 편집 시스템을 수 있도록하기 위해 Desktop 클래스를 사용할 수 있습니다, 인쇄, 파일 찾아보기.

Desktop.getDesktop().open(file); 

외부 응용 프로그램을 의미합니다.

HTML 파일을 작성하여 좀 더 세련되게 만들 수 있습니다.


@MadProgrammer의 coomenting 후 : 인터넷을 통해 실행하면 추가 보안 제한이 샌드 박스 애플릿의 경우

, 을이 애플릿이 두 번째 창을 열 수 있도록 더 좋을 수도 텍스트를 표시합니다. 그런 다음 텍스트를 파일에 쓸 필요는 없습니다. 사용자가 입력 한 데이터를 저장하는 서버에있을 파일을 원하는 경우

, 그건 잘못된 생각 될 것이다 : 애플릿은 클라이언트의 브라우저에서 실행됩니다.

+0

애플릿 컨텍스트 내에서 [JavaDocs] (https://docs.oracle.com/javase/7/docs/api/java/awt/Desktop.html#open (java.io) .File)) * "SecurityException - 시큐러티 매니저가 존재 해, 시큐러티 매니저의 SecurityManager.checkRead (java.이 메소드는, 파일에의 읽어 들여 액세스를 거부하는지, AWTPermission ("showWindowWithoutWarningBanner") 액세스권을 거부하는지, 또는 호출 측 thread가 서브 프로세스 "* – MadProgrammer

+0

'Runtime.getRuntime(). exec ("notepad " + notepad '를 사용하려는 프로그램으로 바꾸십시오. – Charlie

+0

@MadProgrammer 파일이 작성되어 동일한 컴퓨터에서 사용되었다고 결론을 내릴 수 있다는 사실을 알게되었습니다. * 파일 작성은 아마도 인터넷에서 보호 될 것입니다. ** –

관련 문제