Java 选项卡的内容继续移动
Java tab's contents keep moving
这段代码的用途 [打开 Java 文件,然后 Java 文件的内容将显示在新标签页] 我也尝试编译 func 但我需要先在这里解决这个问题.
我的问题是当我尝试打开新的 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();
}
}
您正在创建 JTextArea
的两个实例,一个是 JavaIDE_UI
的实例字段,另一个是 OpenActionListener_open
.
的实例字段
当调用 actionPerformed
方法时,它会将文本附加到现有的 JTextArea
(属于 OpenActionListener_open
),这个过程也会将其从当前 tab/scroll 窗格并将其移动到您创建的新窗格
因此,改为为每个选项卡创建一个新的 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);
}
}
此示例还将 select 选项卡,以便您可以看到新打开的文件。
此外,我会改为 contentPane.add(tp, BorderLayout.NORTH);
contentPane.add(tp);
,否则你会遇到一些奇怪的布局问题
这段代码的用途 [打开 Java 文件,然后 Java 文件的内容将显示在新标签页] 我也尝试编译 func 但我需要先在这里解决这个问题.
我的问题是当我尝试打开新的 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();
}
}
您正在创建 JTextArea
的两个实例,一个是 JavaIDE_UI
的实例字段,另一个是 OpenActionListener_open
.
当调用 actionPerformed
方法时,它会将文本附加到现有的 JTextArea
(属于 OpenActionListener_open
),这个过程也会将其从当前 tab/scroll 窗格并将其移动到您创建的新窗格
因此,改为为每个选项卡创建一个新的 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);
}
}
此示例还将 select 选项卡,以便您可以看到新打开的文件。
此外,我会改为 contentPane.add(tp, BorderLayout.NORTH);
contentPane.add(tp);
,否则你会遇到一些奇怪的布局问题