Jak otworzyć okno z innej klasy?

0

Witam mam do zrobienia na zajecia aplikacje której zadanie to utworzenie strony startowej a nastepnie przejscie do dwoch innych okienek poprzez wywołanie ich w menu kontekstowym , jednak nie mam pojecia jak wywolac otwarcie sie okna z innej klasy . Dodam ze jestem laikiem i z góry dziękuje za wszelka pomoc .
screenshot-20180510181930.png
glowna classa .

import java.awt.*;
import java.awt.event.*;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.*;

public class ZadanieE extends JFrame implements ActionListener { 
	private JMenuItem PlikItem3;
	
	public ZadanieE(){
		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setSize(400, 400);
		setVisible(true);
		setTitle("Okno główne zadania egzaminacyjnego");
		
		setLayout (null);
		//deklazacja obiektów
		JLabel ety1 = new JLabel("Wydział Zarządzania");
		JLabel ety2 = new JLabel("Zakład Informatyki Gospodarczej");
		JLabel ety3 = new JLabel("Programowanie aplikacji");
		JLabel ety4 = new JLabel("Zadanie Egzaminacyjne");
		//ustalanie połorzenia
		ety1.setBounds(50, 40, 120,20);
		ety2.setBounds(50, 60, 220,20);
		ety3.setBounds(50, 80, 220,20);
		ety4.setBounds(50, 100, 220,20);
		//dodanie etykiet do okna aplikacji
		add(ety1);
		add(ety2);
		add(ety3);
		add(ety4);
		
		
		JMenuBar menu = new JMenuBar();
		//JMenu
		JMenu Plik = new JMenu ("Plik");
		JMenuItem Autor = new JMenuItem ("Autor");
		Autor.setActionCommand("AAutor");
		Autor.addActionListener(this);
		//elementy obiektu plik
		JMenuItem PlikItem1 = new JMenuItem("Odczyt");
		JMenuItem PlikItem2 = new JMenuItem("Zapis");
	    PlikItem3 = new JMenuItem("Zamknij");
		
		
		
		
		
		
		Plik.add(PlikItem1);
		Plik.add(PlikItem2);
		Plik.addSeparator();
		Plik.add(PlikItem3);
		
		
		
		//JMenuItem
		menu.add(Plik);
		menu.add(Autor);
		
		setJMenuBar(menu);
		
		PlikItem1.addActionListener(this); //element odczyt
		PlikItem2.addActionListener(this); //element zapis
		PlikItem3.addActionListener(this); //element zamknij
		
		}	
	public void actionPerformed(ActionEvent e) {
		String command = e.getActionCommand();
		if(command.equals("Zamknij")){
		JOptionPane.showConfirmDialog(this, "Nastąpi zamknięcie aplikacji",
		"Informacja", JOptionPane.YES_NO_OPTION,JOptionPane.WARNING_MESSAGE);
		dispose();
		
	}
		else if(command.equals("AAutor")){
			JOptionPane.showMessageDialog(this, "Autor Aplikacji: Kacper Pietrzak",
			"Informacja", JOptionPane.QUESTION_MESSAGE);
			dispose();
			}
	}
	
	
	  
		
	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable(){
		public void run(){
		new ZadanieE();
		}
		});
	}
}

classy dodatkowe

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

public class Zapis extends JFrame {
	JTextArea ta;

	public Zapis() {
		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				e.getWindow().dispose();
			}
		});
		ActionListener al = new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if (e.getActionCommand().equals("save"))
					save();
			}
		};
		setLayout(null);
		ta = new JTextArea("tekst domyślny...");
		ta.setBounds(30, 30, 260, 200);
		this.add(ta);
		JButton bt1 = new JButton("Zapisz");
		bt1.setBounds(100, 240, 100, 20);
		bt1.addActionListener(al);
		bt1.setActionCommand("save");
		add(bt1);
		add(ta);
		setSize(320, 320);
		setVisible(true);
		setTitle("Zapis do pliku");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	
	public void save() {
		FileWriter fw = null;
		String text = ta.getText();
		try {
			fw = new FileWriter("magazyn.txt", true);
			fw.write(text, 0, text.length());
			fw.close();
			System.out.println("tekst został zapisany w " + fw);
		} catch (IOException e) {
			System.out.println("błąd podczas zapisu pliku" + e);
		}
	}
	public static void main(String[] args) {
	SwingUtilities.invokeLater(new Runnable(){
	public void run(){
	new Zapis();
	}
	});
	}
	}
	

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
public class Odczyt extends JFrame {
private JTextArea ta;
public Odczyt(){
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
e.getWindow().dispose();
}
});
ActionListener al = new ActionListener(){
public void actionPerformed(ActionEvent e){
if(e.getActionCommand().equals("odczytPlik"))
odczytPlik();
}
};
setLayout(null);
ta = new JTextArea();
ta.setBounds(30, 30, 260, 200);
this.add(ta);
JButton bt1 = new JButton("Odczytaj");
bt1.setBounds(100, 240, 100, 20);
bt1.addActionListener(al);
bt1.setActionCommand("odczytPlik");
add(bt1);
add(ta);
setSize (320, 320);
setVisible(true);
setTitle("Odczyt z pliku");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void odczytPlik() {
File fx = new File("D:\\studia\\programowwanie\\ZadanieE\\magazyn.txt"); 
if(!fx.exists()){
System.out.println("Plik nie jstnieje");
return;
}
RandomAccessFile raf = null;
try{
raf = new RandomAccessFile (fx, "r");
}
catch (FileNotFoundException e){
System.out.println("Nie ma takiego pliku" + e);
return;
}
//przypisanie odczytanego tekstu do pola ta klasy TextArea
ta.setText("");
String line = "";
try{
while((line = raf.readLine())!= null){;
System.out.println(line);
ta.append(line + '\n');
}
raf.close();
}
catch (IOException f){
System.out.println("Błąd wejścia wyjścia" + f);
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable(){
public void run(){
new Odczyt();
}
});
}
}

0

Przede wszystkim w Twoim programie powinna być tylko JEDNA funkcja main, dlatego pozostałe dwie powinieneś wyrzucić.
Co otwarcia okna z innej klasy to dość prosta sprawa. Wystarczy że w metodzie actionPerformed() klasy ZadanieE wstawisz jeszcze jedne warunek. Przykładowo dla zapisu będzie wyglądało to tak:

if (e.getSource() == PlikItem2){
    Zapis zapisz = new Zapis();
}

Musisz jeszcze zadeklarować zmienną PlikItem2 poza konstruktorem. W przypadku klasy Odczyt robisz analogicznie.

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