我的程序打开一个文件,允许您查看或编辑它,然后再次保存。到目前为止,我只有GUI布局。
因此,当我尝试编译程序时,出现以下错误:
FileChooser.java:26: error: <identifier> expected
fileChooser = newJFileChooser();
我得到^^^错误四次,我初始化的每个组件一次。
FileChooser.java:39: error: invalid method declaration; return type required
public FileChooserGUI() {
当我尝试创建构造函数时,我得到了^^^错误。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.filechooser.*;
public class FileChooser extends JFrame { //JFrame is a container class in Swing
//declare all components and other variables
private JTextArea textArea; //b
private JButton openFileButton; //c
private JButton saveFileButton;
private JButton clearButton;
//Declare and initialize a JFileChooser object using JFileChooser's
//default constructor.
private JFileChooser fileChooser;
fileChooser = newJFileChooser();
//Declare and initialize a FileNameExtensionFilter object for .txt files.
private FileFilter fileFilter;
fileFilter = new FileNameExtensionFilter("text file", "txt");
//Set the JFileChooser object's current file filter by calling it's
//setFileFilter method and passing it the filter you created in e.
fileChooser.setFileFilter(fileFilter);
//constructor - initialize all components, add them to the container,
//create listener objects, register them to listen for events
public JFileChooserLabGUI() {
//call superclass constructor
super("File Chooser");
//initialize all components
textArea = new JTextArea();
openFileButton = new JButton("Open");
saveFileButton = new JButton("Save");
clearButton = new JButton("Clear");
//create and register the listener object with
//sources of events (the JButtons in this example)
listener = new JFileChooserListener();
openFileButton.addActionListener(listener);
saveFileButton.addActionListener(listener);
clearButton.addActionListener(listener);
//arrange components in the window
//Create a layout manager object and set this window's
//layout manager to it
textPanel = new JPanel();
textPanel.setLayout(new GridLayout(1,2));
textPanel.add(textArea);
buttonPanel = new JPanel();
buttonPanel.setLayout(new GridLayout(1,3,15,0));
buttonPanel.add(openFileButton);
buttonPanel.add(saveFileButton);
buttonPanel.add(clearButton);
this.setLayout(new GridLayout(3,1));
//Add components to the container
this.add(textPanel);
this.add(buttonPanel);
}//end of constructor
}//end of class
我还没有完成监听器类,但我不认为只是显示GUI以确保我的布局正确无关?
我注意到当我在同一行声明和初始化时,我没有得到这四个错误。 我是在初步说错了吗?
答案 0 :(得分:1)
您尝试声明JFileChooserLabGUI
类型的构造函数,但该类声明为FileChooser
:
public class FileChooser extends JFrame {
public JFileChooserLabGUI() {
...
}
}
编辑:如上所述,还存在其他问题。例如,您不能在方法/构造函数之外使用简单的赋值语句:
fileChooser = newJFileChooser();
您需要将它作为变量声明的一部分放在构造函数或中。
......这可能意味着new JFileChooser()
,而不是调用newJFileChooser()
方法。例如,如果您将其作为声明的一部分:
private JFileChooser fileChooser = new JFileChooser();
对FileFilter
执行相同操作,然后移动此行:
fileChooser.setFileFilter(fileFilter);
进入你的构造函数。
总的来说 - 特别是如果你对某种语言比较陌生 - 那么经常建立你的代码是个好主意。这样你就可以在找到错误时更好地理解错误,因为你只会编写错误的代码。哦,你也去写单元测试。
答案 1 :(得分:1)
我认为有几件事需要纠正
构造函数名称与类名称不同。
关于类方法之外的变量赋值:
此外,语法错误很小。新建和名称之间应该有空格。
public FileChooser () {
//call superclass constructor
super("File Chooser");
fileChooser=fileChooser = new JFileChooser();
fileFilter=new FileNameExtensionFilter("text file", "txt");
fileChooser.setFileFilter(fileFilter);
...
}
希望这有帮助!