2017-12-16 20 views
-1

このコードの目的[Javaファイルを開いて、そのJavaファイルの内容が新しいタブに表示されます]私はfuncをコンパイルしようとしますが、ここでまずこの問題を解決する必要があります。Javaタブの内容が移動し続ける

私の問題は新しいJavaファイルを開こうとしたときに、Javaファイルの最後のコンテンツがJavaファイルの新しいコンテンツに蓄積されたときです。私はなぜ、これを解決する方法があるのか​​分からないのですか?

package term_project_GUI; 

import javax.swing.*; 
import javax.swing.filechooser.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.io.*; 

public class JavaIDE_UI extends JFrame { 
    Container contentPane; 

    JTabbedPane tp; 
    JPanel p1 = new JPanel(); 
    JPanel p2 = new JPanel(); 
    JTextArea ta = new JTextArea(15, 30); 
    JScrollPane sp = new JScrollPane(ta); 

    JavaIDE_UI() { 
     setTitle("JavaIDE"); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     createMenu(); 

     contentPane = getContentPane(); 
     contentPane.setLayout(new BorderLayout()); 
     tp = new JTabbedPane(); 
     contentPane.add(tp, BorderLayout.NORTH); 
     contentPane.add(p2, BorderLayout.SOUTH); 

     setSize(400, 500); 
     setVisible(true); 
    } 

    void createMenu() { 
     JMenuBar mb = new JMenuBar(); 
     JMenu File = new JMenu("File"); 
     JMenu Run = new JMenu("Run"); 
     JMenuItem Open = new JMenuItem("Open"); 
     JMenuItem Close = new JMenuItem("Close"); 
     JMenuItem Save = new JMenuItem("Save"); 
     JMenuItem SaveAs = new JMenuItem("Save As"); 
     JMenuItem Quit = new JMenuItem("Quit"); 
     JMenuItem Compile = new JMenuItem("Compile"); 

    Open.addActionListener(new OpenActionListener_open()); 

    File.add(Open); 
    File.add(Close); 
    File.add(Save); 
    File.add(SaveAs); 
    File.add(Quit); 

    Run.add(Compile); 

    mb.add(File); 
    mb.add(Run); 

    setJMenuBar(mb); 
} 

class OpenActionListener_open implements ActionListener { 
    JFileChooser chooser; 
    JTextArea ta = new JTextArea(15, 30); 

    OpenActionListener_open() { 
     chooser = new JFileChooser(); 
    } 

    public void actionPerformed(ActionEvent e) { 
     FileNameExtensionFilter filter = new FileNameExtensionFilter(".java files", "java"); 
     chooser.setFileFilter(filter); 

     int ret = chooser.showOpenDialog(null); 
     if (ret != JFileChooser.APPROVE_OPTION) { 
      JOptionPane.showMessageDialog(null, "File Unchoose.", "Warning", JOptionPane.WARNING_MESSAGE); 
      return; 
     } 


     String fileName = chooser.getSelectedFile().getName(); 
     tp.addTab(fileName, new JScrollPane(ta)); 

     String filePath = chooser.getSelectedFile().getPath(); 
     try { 
      BufferedReader reader = new BufferedReader(new FileReader(filePath)); 
      String data = ""; 
      while ((data = reader.readLine()) != null) { 
       ta.append(data+"\n"); 
      } 
      reader.close(); 
     } catch (IOException e1) { 
     } 


    } 
} 

public static void main(String[] args) { 
    new JavaIDE_UI(); 
} 
} 
+1

いくつかの奇妙なレイアウトの問題を持っているつもりはあまり各タブ – MadProgrammer

答えて

1

あなたはJTextAreaの2つのインスタンスを作成している、一つはJavaIDE_UIのインスタンスフィールドであり、他は​​のインスタンスフィールドです。 actionPerformedメソッドが呼び出されると

、それは、(​​の)既存のJTextAreaにも、それが現在のタブ/スクロールペインのからそれを削除し、作成した新しいものにそれを移動するプロセスを、テキストを追加していますあなたが新たにオープンしたファイルを見ることができるように

ので、代わりに、各タブのための新しいJTextAreaを作成...

class OpenActionListener_open implements ActionListener { 

    JFileChooser chooser; 

    OpenActionListener_open() { 
     chooser = new JFileChooser(); 
    } 

    public void actionPerformed(ActionEvent e) { 
     FileNameExtensionFilter filter = new FileNameExtensionFilter(".java files", "java"); 
     chooser.setFileFilter(filter); 

     int ret = chooser.showOpenDialog(null); 
     if (ret != JFileChooser.APPROVE_OPTION) { 
      JOptionPane.showMessageDialog(null, "File Unchoose.", "Warning", JOptionPane.WARNING_MESSAGE); 
      return; 
     } 

     String fileName = chooser.getSelectedFile().getName(); 
     JTextArea ta = new JTextArea(); 
     JScrollPane sp = new JScrollPane(ta); 
     tp.addTab(fileName, sp); 

     String filePath = chooser.getSelectedFile().getPath(); 
     try { 
      BufferedReader reader = new BufferedReader(new FileReader(filePath)); 
      String data = ""; 
      while ((data = reader.readLine()) != null) { 
       ta.append(data + "\n"); 
      } 
      reader.close(); 
     } catch (IOException e1) { 
     } 
     tp.setSelectedComponent(sp); 

    } 
} 

また、この例では、タブを選択します。

また、私はcontentPane.add(tp, BorderLayout.NORTH);contentPane.add(tp);に変化するであろう、そうでなければ、

+0

のための新しい 'JTextArea'を作成して私を助けてくれてありがとう。私の目標はGUIを使ってJavaIDEをコード化することです。だから最後に、私が北のペインで印刷したJavaファイルをコンパイルしてください。私はBorderLayoutを北に設定しています。 – Taker829

+0

私はこれについてあなたに感謝しています。ありがとうございました – Taker829

+0

北の位置に配置されたときに私はいくつかの奇妙なレイアウトの問題を抱えていました – MadProgrammer

関連する問題