edytor tekstu pomoc

0
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JTextArea;
public class Edytor extends JFrame implements ActionListener 
{
private JButton wczytaj=new JButton("wczytaj");
private JButton zapisz=new JButton("zapisz");
private JTextArea edytor=new JTextArea();
public Edytor()
{
Container c = this.getContentPane();
Container d = new Container();
d.setLayout(new GridLayout());
c.setLayout(new BorderLayout());
//c.add(przycisk,BorderLayout.SOUTH);
d.add(wczytaj,BorderLayout.EAST);
d.add(zapisz,BorderLayout.WEST);
c.add(d,BorderLayout.SOUTH);
c.add(edytor,BorderLayout.CENTER);
wczytaj.addActionListener(this);
zapisz.addActionListener(this);
this.setSize(new Dimension(600,600));
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(String[] args) 
{
new Edytor();
}
@Override
public void actionPerformed(ActionEvent a) 
{
if(a.getSource()==wczytaj);
{
  JFileChooser fc =new JFileChooser();
  fc.showOpenDialog(null);
  String tekst = "";
  File plik=fc.getSelectedFile();
try 
{
  BufferedReader br=new BufferedReader(new FileReader(plik));
  String linia;
do
{
  linia=br.readLine();
  if(linia!=null)
  tekst+=linia+"\n";
}
  while(linia!=null);
  br.close();
  edytor.setText(tekst);
} 
catch (IOException e) 
{
  // TODO Auto-generated catch block
  e.printStackTrace();
}
}
{
if(a.getSource()==zapisz);
String tekst;
/**
 * @param args
 */

	JFileChooser fc =new JFileChooser();
	fc.showSaveDialog(null);
	tekst="";
	for(int i=0;i<10;i++)
	{
		tekst+="Hello World!\n";
	}
	File plik=fc.getSelectedFile();
	try {
		BufferedWriter bw=new BufferedWriter(new FileWriter(plik));
		
		bw.write(tekst);
		bw.flush();
		bw.close();
	} catch (IOException e) 
	{
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}
}
}



Witam mam pewien problem gdy włączam odczyt pliku wszystko jest ok jednak kiedy chce zapis to otwiera mi się okienko do znajdowania pliku w czym jest problem?Dziękuje z góry za pomoc


0
if (a.getSource() == wczytaj); 

"empty statement after if" podpowiada IDE.
Masz więcej takich tricków, dlatego proponuję wrócić do instrukcji warunkowych...

0

a możesz dać odp na moje pytanie dlaczego się dzieje to co napisałem w pierwszym poście? Muszę ten program oddać w przyszłym tygodniu a jescze muszę go urozmaicić a tu taki błąd ;/

0

wywal średnik na końcu if i zobacz co się stanie

0

a takie głupie pytanie bo szukam i szukam jak dodać scrolla?Bo doszedłem do tego

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.AbstractButton;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class Edytor extends JFrame implements ActionListener 
{
private JButton wczytaj=new JButton("wczytaj");
private JButton zapisz=new JButton("zapisz");
private JTextArea edytor=new JTextArea();
private JScrollPane scroll=new JScrollPane();
public Edytor()
{
Container c = this.getContentPane();
Container d = new Container();
d.setLayout(new GridLayout());
c.setLayout(new BorderLayout());
//c.add(przycisk,BorderLayout.SOUTH);
d.add(wczytaj,BorderLayout.EAST);
d.add(zapisz,BorderLayout.WEST);
c.add(d,BorderLayout.SOUTH);
c.add(edytor,BorderLayout.CENTER);
c.add(scroll,BorderLayout.CENTER);
wczytaj.addActionListener(this);
zapisz.addActionListener(this);
this.setSize(new Dimension(600,600));
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
0

Pomoże ktoś z tym scrollpane ?

0
private JScrollPane scroll=new JScrollPane(edytor);
...
<del>c.add(edytor,BorderLayout.CENTER);</del>
c.add(scroll,BorderLayout.CENTER);
0

działa tera dziękuje a mam pytanko da się zrobić żeby ten suwak był zawsze na wierzchu,bo pojawia mi sie tylko jak dam dużą ilość tekstu w sensie chodzi mi tak jak jest notatnik w windowsie i widać ten przesuwak ale nie można go używać?

0
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.KeyStroke;

public class Edytor extends JFrame implements ActionListener {
	private static final String Edytor = null;
	private JTextArea edytor = new JTextArea();
	private JScrollPane scroll = new JScrollPane(edytor);
	private JMenuBar menuBar = new JMenuBar();
	private JMenu Plik = new JMenu("Plik");
	private JMenu Edycja = new JMenu("Edycja");
	private JFrame frame = new JFrame("Edytor");
	private JMenuItem Otwórz = new JMenuItem("Otwórz");
	private JMenuItem Zapisz = new JMenuItem("Zapisz");
	private JMenuItem Wklej = new JMenuItem("Wklej");
	private JMenuItem Kopiuj = new JMenuItem("Kopiuj");
	private JMenuItem Zaznacz = new JMenuItem("Zaznacz");
	private JMenuItem Wytnij = new JMenuItem("Wytnij");

	public Edytor() {
		Container c = this.getContentPane();
		Container d = new Container();
		d.setLayout(new GridLayout());
		c.setLayout(new BorderLayout());
		c.add(d,BorderLayout.SOUTH);
		c.add(scroll, BorderLayout.CENTER);
		Otwórz.addActionListener(this);
		Zapisz.addActionListener(this);
		Wklej.addActionListener(this);
		Kopiuj.addActionListener(this);
		Zaznacz.addActionListener(this);

		this.setSize(new Dimension(650, 650));
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setVisible(true);
		this.setJMenuBar(menuBar);
		this.setTitle("Edytor");
		scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
		scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
		menuBar.add(Plik);
		menuBar.add(Edycja);
		Plik.add(Otwórz);
		Plik.add(Zapisz);
		Edycja.add(Kopiuj);
		Edycja.add(Wklej);
		Edycja.add(Zaznacz);
		Edycja.add(Wytnij);

		// skróty klawiszowe
		Otwórz.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,
				ActionEvent.CTRL_MASK));
		Zapisz.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,
				ActionEvent.CTRL_MASK));
		Kopiuj.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,
				ActionEvent.CTRL_MASK));
		Wklej.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,
				ActionEvent.CTRL_MASK));
		Zaznacz.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,
				ActionEvent.CTRL_MASK));
		Wytnij.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,
				ActionEvent.CTRL_MASK));

	}

	public static void main(String[] args) {
		new Edytor();
	}

	@Override
	public void actionPerformed(ActionEvent a) {
		if (a.getSource() == Otwórz) {
			JFileChooser fc = new JFileChooser();
			fc.showOpenDialog(null);
			String tekst = "";
			File plik = fc.getSelectedFile();

			try {
				BufferedReader br = new BufferedReader(new FileReader(plik));
				String linia;

				do {
					linia = br.readLine();
					if (linia != null)
						tekst += linia + "\n";
				} while (linia != null);
				br.close();
				edytor.setText(tekst);
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		{

			if (a.getSource() == Zapisz) {
				String tekst;
				/**
				 * @param args
				 */
				JFileChooser fc = new JFileChooser();
				fc.showSaveDialog(null);
				tekst = edytor.getText();
				File plik = fc.getSelectedFile();

				try {
					BufferedWriter bw = new BufferedWriter(new FileWriter(plik));
					bw.write(tekst);
					bw.flush();
					bw.close();

				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}
}
 

mam problem jak zrobić,żeby program Od razu zapisywał do pliku.txt a nie do zwykłego pliku?

0

mam problem jak zrobić,żeby program od razu zapisywał do pliku.txt a nie do zwykłego pliku?

Możesz wyjaśnić o co Ci chodzi?

0

no jak zapisuje jakiś tekst tego programu to zapisuje mi go w zwykłym pliku bez rozszerzenia a chciałbym żeby go automatycznie w txt zapisywał .

0

Masz trzy możliwości:

  • jak wykonywany jest ten kod:
JFileChooser fc = new JFileChooser();
fc.showSaveDialog(null);

to użytkownik wpisuje nazwę pliku, wpisuj po prostu pliczek.txt.

  • możesz zawsze zmieniać nazwę pliku:
String nameOfFile = fc.getSelectedFile().getAbsolutePath()+".txt";
File f = new File(nameOfFile);

grozi to nazwą postaci pliczek.txt.txt

  • najlepsze moim zdaniem rozwiązanie
String nameOfFile = fc.getSelectedFile().getAbsolutePath();
if(!nameOfFile.toLowerCase().endsWith(".txt"))
{
     nameOfFile+=".txt";
}
File f = new File(nameOfFile);

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