2012-05-14 132 views
2

我已經創建了一個JFrame,並且在文本框中放置了一個文本框和button.in,我已經從文本文件中讀取了一個名稱。現在,我想單擊按鈕並打開一個知道的窗口,我想從同一個文件中輸入名稱+其他信息。按一下按鈕,然後在java的新窗口中打開一個文件

這裏是我的代碼: 這是我的主框架

package Frontend; 

    import Business.ShowDetails; 
    import model.*; 
    import java.awt.*; 
    import java.awt.event.*; 
    import java.io.*; 
    import java.util.*; 
    import javax.swing.*; 

public class Gui { 
    //String file=" "; 
    private JFrame frame; 
    private JPanel panel1 ; 
    private JPanel panel2; 
    private JPanel panel; 
    private JTextField nume1; 
    private JTextField nume2; 
    private JTextField nume3; 
    private JTextField nume4; 
    private JTextField nume5; 
    private JButton edit1; 
    private JButton edit2; 
    private JButton edit3; 
    private JButton edit4; 
    private JButton edit5; 
    private final String file = "Persoane.txt"; 


public Gui(){ 
    fereastra(); 
    readFile(file); 
} 

public void fereastra(){ 

    frame = new JFrame(); 
    panel = new JPanel(new FlowLayout()); 
    panel1 = new JPanel(new GridLayout(5,2,1,7)); 
    panel2 = new JPanel(new GridLayout(5,2,1,1)); 

    nume1 = new JTextField(15); 
    nume2 = new JTextField(15); 
    nume3 = new JTextField(15); 
    nume4 = new JTextField(15); 
    nume5 = new JTextField(15); 

    edit1 = new JButton("Edit"); 
    edit2 = new JButton("Edit"); 
    edit3 = new JButton("Edit"); 
    edit4 = new JButton("Edit"); 
    edit5 = new JButton("Edit"); 

    panel1.add(nume1); 
    panel2.add(edit1); 
    panel1.add(nume2); 
    panel2.add(edit2); 
    panel1.add(nume3); 
    panel2.add(edit3); 
    panel1.add(nume4); 
    panel2.add(edit4); 
    panel1.add(nume5); 
    panel2.add(edit5); 

    ButtonHandler handler = new ButtonHandler();  
    edit1.addActionListener(handler);        
    edit2.addActionListener(handler); 
    panel.add(panel1); 
    panel.add(panel2); 
    frame.add(panel); 
    frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE); 
    frame.setSize(300, 200); 
    frame.setVisible(true); 
} 
public String readFile(String filename){ 
    try{ 
     String line=""; 
     Persoana p ; 
     BufferedWriter bw = null; 
     ArrayList<Persoana> listOfPersons; 

      //creez o lista de persoane 
     listOfPersons = new ArrayList<Persoana>(); 
     //citesc fisierul Persoane.txt 
     FileReader file1 =new FileReader(filename); 
     BufferedReader br1 = new BufferedReader(file1); 

     while((line = br1.readLine())!= null){ 
      //elimin prima linie din fisier 

     if(!line.trim().contains("ID")){ 
     String[] attributes = line.split(";");// separ fiecare linie in tokenuri 

      p = new Persoana(); // make a new person 
      p.setId(Integer.parseInt(attributes[0])); 
      p.setNume(attributes[1]); 
      p.setPrenume(attributes[2]); 
      p.setDataNasterii(attributes[3]); 
      p.setProfesie(attributes[4]); 

      listOfPersons.add(p); 
     } 

     } 
     int i = 0; 
     while (i < listOfPersons.size()){ 
      if(i == 0){ 
       p = listOfPersons.get(i); 
       nume1.setText(p.getNume() + " " +p.getPrenume()); 
       nume1.getText(); 
      } 
      if(i == 1){ 
       p = listOfPersons.get(i); 
       nume2.setText(p.getNume() + " " +p.getPrenume()); 
       nume2.getText(); 
      } 
      if(i == 2){ 
       p = listOfPersons.get(i); 
       nume3.setText(p.getNume() + " " +p.getPrenume()); 
       nume3.getText(); 
      } 
      if(i == 3){ 
       p = listOfPersons.get(i); 
       nume4.setText(p.getNume() + " " +p.getPrenume()); 
       nume4.getText(); 
      } 
      if(i == 4){ 
       p = listOfPersons.get(i); 
       nume5.setText(p.getNume() + " " +p.getPrenume()); 
       nume5.getText(); 
      } 

      i++; 
     } 
     br1.close(); 
    } 
    catch(IOException ex){ 
     System.out.println("Error opening file."); 
     System.exit(1); 
    } 
    return file; 
} 

    // inner class for button event handling 
    private class ButtonHandler implements ActionListener { 
      public void actionPerformed(ActionEvent e) { 
        if (e.getSource() == edit1) { 
          new ShowDetails(); 

        } 
        if (e.getSource() == edit2) { 
          new ShowDetails(); 
        } 
     } 
} 
} 

這是我第二次cclass:

package Business; 

    import Frontend.*; 
    import javax.swing.*; 
    import java.awt.*; 
    import java.awt.event.*; 




    public class ShowDetails extends JFrame{ 

    Gui gui; 


    public ShowDetails(){ 

    this.gui = gui; 
    fereastra(); 
} 

public void fereastra(){ 
    JPanel panel = new JPanel(new GridLayout(2, 2)); 
    JTextArea text = new JTextArea(); 
    text.setEditable(true); 
    text.setText(gui.readFile("Persoane.txt")); 
    text.getText(); 
    panel.add(text); 

    getContentPane().add(panel); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    //setLocation(50,50); 
setSize(300,200); 
setResizable(false); 
    // setVisible(true); 
    show(); 
} 


} 
+3

我們要需要你指出你需要幫助的問題。 – FljpFl0p

+1

你的問題是什麼? – assylias

+0

問題是?如何使用第一個方法readFile()從第一個類(框架)通過按下按鈕來顯示我需要的第二個類(框架)。 – Laura

回答

3
  1. 不要創建一個新的JFrame,如果你想要的彈出窗口使用框架的父親JDialog
  2. 不要使用show();,因爲這是很長一段時間折舊法,刪除和取消註釋// setVisible(true);
  3. 爲什麼是兩個JButtons做同樣的事情?
  4. 爲什麼使用FileIO從一個Object將值或參數傳遞給另一個?
  5. 我建議使用CardLayout而不是創建一個彈出窗口。
  6. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); from class ShowDetails將關閉當前的JVM實例。
  7. 請勿延長JFrameJDialogJWindow
相關問題