JAVA Gdzie jest blad w kodzie??

0

Mam problem, nie wiem dlaczego JCreator wywala mi 5 errorow poczas kompilacji, tekst jest spisany z ksiazki, a mimo to nie dziala.

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

public class Editor {
static public void main(String[] args) {
try {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName()
);
}
catch (Exception e) {
}
new Editor();
}
//główne okno ramowe
private JFrame frame = new JFrame ("Editor");

//pole edycyjne
private JTextArea textArea = new JTextArea (10,20);

//dialog do wybierania plików
private JFileChooser fileChooser = new JFileChooser (".");

//pole tekstowe z nazwą edytowanie pliku
private JTextField txtFld = new JTextField (10);

//otwieranie pliku
private Action open=
new AbstractAction ("Otworz", new ImageIcon ("open.gif")){
	public void actionPerformed(ActionEvent ae) {
		if (fileChooser.showOpenDialog(frame) ==
		JFileChooser.APPROVE_OPTION) {
			readFile(fileChooser.getSelectedFile());
		}
	}
};

//zamykanie pliku
private Action close =
new AbstractAction ("Zamknij", new ImageIcon ("close.gif")){
	public void actionPerformed(ActionEvent ae){
		closeFile();
	}
};

//zapis pliku
private Action save = 
new AbstractAction ("Zapisz jako...", new ImageIcon("save.gif")){
	public void actionPerformed(ActionEvent ae){
		if (fileChooser.showSaveDialog(frame) ==
		JFileChooser.getSelectedFile());
	}
};

}

public Editor() {
Container content = frame.getContentPane();
//utworzeni menu
JMenuBar menuBar = makeMenu();
//utworzenie paska narzędziowego
JToolBar toolBar = makeToolBar();
//utworzenie menu kontekstowego
makePopup();
//panel przewijany zawierajacy pole edycyjne
JScrollPane scrollPane = new JScrollPane (textArea);

frame.setLocation (300, 300);
//obsługa zamknięcia okna
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//ustanowienie paska menu
frame.setJMenuBar(menuBar):

scrollPane.setPreferredSize(new Dimension (400, 300));
//ustalenie rozkładu i dodanie komponentów
content.setLayout(new BorderLayout ());
content.add(toolBar, BorderLayout.NORTH);
content.add(scrollPane, BorderLayout.CENTER);

//realizacja i uwidocznienie komponentu
frame.pack();
frame.setVisible(true);

}

private JToolBar makeToolBar() {
JToolBar tb = new JToolBar();
JLabel file = new JLabel("Nazwa pliku...");
txtFld.setMaximumSize(new Dimension(100,21));

//dodanie komponentów do paska narzędzi
tb.addSeparator();
tb.add(open);
tb.add(close);
tb.add(save);
tb.addSeparator();
tb.add(file);
tb.add(txtFld);

return tb;

}

private JMenuBar makeMenu() {
JMenuBar mb = new JMenuBar();
JMenu fileMen = new JMenu ("Plik");
JMenuItem exitMen = new JMenuItem ("Wyjscie");

//budowanie menu
fileMen.add(open);
fileMen.add(close);
fileMen.add(save);
fileMen.addSeparator();
fileMen.add(exitMen);
mb.add(fileMen);

//dodanie obslugi do menu exit
exitMen.addActionListener(
	new ActionListener () {
		public void actionPerformed(ActionEvent e) {
		}
	});
	return mb;
}

private JPopupMenu make Popup() {
	final JPopupMenu pop = new JPopupMenu ();
	pop.add(open);
	pop.add(close);
	pop.add(save);
	
	textArea.addMouseListener(new MouseAdapter(){
		public void mouseReleased(MouseEvent e){
			if (e.isPopupTrigger())
			pop.show(textArea, e.getX(), e.getY());
		}
	});
	return pop;
}

private void readFile(File file){
	txtFld.setText(file.getName());
	
	try{
		FileReader fr = new FileReader(file);
		BufferedReader br = new BufferedReader (fr);
		
		//wyczyszczenie panelu edycyjnego przed wczytnaniem nowego pliku
		textArea.setText("");
		
		String line;
		while(line = br.readLine()) !=null) {
			textArea.append(line +"\n");
		}
		br.close();
	}
		catch(Exception e) {
			System.out.println(e.getMessage());
		}
}

private void saveFile(File file) {
	txtFld.setText(file.getName());
	
	try{
		FileWriter fw = new FileWriter(file);
		String text = textArea.getText();
		
		fw.write(text);
		fw.close();
	}
	catch (Exception e) {
		System.out.println(e.getMessage());
	}
}

private void closeFile () {
	File file;
	String fileName = txtFld.getText();
	
	if (fileName.length()>0) {
		file = new File(fileName);
	}
	else {
		txtFld.setText("brak nazwy pliku");
		return;
	}
	saveFile(file);
	txtFld.setText("");
	textArea.setText("");
	
}
0

Javy się dopiero uczę, ale postaram się pomóc

public class Editor {
static public void main(String[] args) {

Powinno być odwrotnie: public static.....

new Editor();

Co new Editor? A gdzie jakaś zmienna?
Editor ed = new Editor();

public Editor()

Nie powinno być lepiej: public void Editor() ??

Reszty nie chce mi się sprawdzać. Ale mnie uczono, że jeśli dodajesz ActionListenera, to robisz to w deklaracji klasy:

public class Klasa implements ActionListener

Potem dodaje się do komponentów: b.addActionListener(this);
Gdzie b to jakiś komponent, ale o tym wszystkim to pewnie wiesz.

0

pozmienialam wg twoich wskazowek,a blad sie nadal pojawia

1)Editor.java 'class' or 'interface' expected
public void Editor () {
^
2)Editor.java cannot resolve symbol
symbol: method readFile (java.io.File)
readFile(fileChooser.getSelectedFile());
^
3)Editor.java cannot resolve symbol
symbol: method closeFile ()
closeFile();
^
4)Editor.java non-static method getSelectedFile() cannot be referenced from a static context
JFileChooser.getSelectedFile());
^
5)Editor.java operator == cannot be applied to int,java.io.File
if (fileChooser.showSaveDialog(frame) ==
^
5 errors

0

1)Editor.java 'class' or 'interface' expected
public void Editor ()
BEZ SPACJI pomiędzy Editor, a ()

2)Editor.java cannot resolve symbol
symbol: method readFile (java.io.File)
readFile(fileChooser.getSelectedFile());

Poczytaj o tej metodzie w API. Może coś jest nie tak

3)Editor.java cannot resolve symbol
symbol: method closeFile ()
closeFile();

j.w.
^

4)Editor.java non-static method getSelectedFile() cannot be referenced from a static context
JFileChooser.getSelectedFile());

getSelectedFile musi być metodą statyczną

5)Editor.java operator == cannot be applied to int,java.io.File
if (fileChooser.showSaveDialog(frame) ==
Niezgodność typów

Poza tym pamiętaj, że:

  1. Nie możesz pisać rzeczy typu:
    nazwaMetody (parametry) tylko nazwaMetody(parametry)
    lub:
    konstruktor (parametry) tylko konstruktor(parametry)

Tam nie może być spacji

  1. Na większość pytań masz odpowiedź w API
0

Tam nie może być spacji

Akurat zarowno Java jak i C/C++/Pascal olewaja rowno spacje miedzy tekstem a nawiasem.
Przyjelo sie, ze spacji sie nie pisze. Na pewno jednak nie jest to bledem.

public void Editor()

@Juhas: Jak nie wiesz, to nie mieszaj ludziom w glowie. Bylo dobrze: public Editor().

@Kapsel: Bledem jest umieszczanie metod POZA klasa. A tak zrobiles. Co to jest public Editor()? Wyglada na konstruktor. Dlaczego jest wiec za nawiasem } konczacym definicje klasy? I tak z pozostalymi metodami.

0

public void Editor()

@Juhas: Jak nie wiesz, to nie mieszaj ludziom w glowie. Bylo dobrze: public Editor().

Przepraszam, mój błąd

@Kapsel: Bledem jest umieszczanie metod POZA klasa. A tak zrobiles. Co to jest public Editor()? Wyglada na konstruktor. Dlaczego jest wiec za nawiasem } konczacym definicje klasy? I tak z pozostalymi metodami.

Jak zwykle najmniejsza duperelka ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1