Options-Frame integrieren (zum zuschalten und wegschalten wie geht man da ran?

kleinfritzchen

Aktives Mitglied
Hallo,
ich bastle grad ein wenig mit einer GUI und habe jetzt das Problem das ich gern ein JFrame in das JScrollpane setzen möchte das ich auch wieder dort entfernen kann wenn alle einstellungen getätigt wurden.
Wie kann ich das bewerkstelligen?

MfG Fritz
Hier mein Code:
Java:
package GuiDemo;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;

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.UIManager;
import javax.swing.filechooser.FileNameExtensionFilter;

public class GuiDemo1 extends JFrame implements ActionListener {

	JFrame frame,op;
	JMenuBar menueLeiste;
	JMenu datei;
	JMenuItem oeffnen;
	JMenuItem speichern;
	JMenuItem optionen;
	JMenuItem beenden;
	JMenu hilfe;
	JMenuItem faq;
	JMenuItem about;
	JFileChooser fd;

	File oFile, sFile;// oFile = Quelldatei; sFeile = Zieldatei
	JScrollPane sp;

	// Konstruktor
	GuiDemo1() {
		frame = new JFrame("Kalender Konverter");
		try {
			UIManager
					.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
		} catch (Exception e) {
			e.printStackTrace();
		}
		frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
		frame.setSize(640, 480);
		frame.setLocationRelativeTo(null);

		erstelleKomponente();
		addKomponente();

		frame.setVisible(true);

	}

	// Komponenten adden
	private void addKomponente() {
		frame.getContentPane().add(menueLeiste, BorderLayout.NORTH);
		frame.getContentPane().add(sp, BorderLayout.CENTER);
	}

	public void erstelleKomponente() {

		// erstelleKomponente();
		// Datei
		menueLeiste = new JMenuBar();
		datei = new JMenu("Datei");
		hilfe = new JMenu("Hilfe");
		oeffnen = new JMenuItem("Öffnen");
		oeffnen.addActionListener(this);
		speichern = new JMenuItem("speichern");
		speichern.addActionListener(this);
		optionen = new JMenuItem("optionen");
		optionen.addActionListener(this);
		beenden = new JMenuItem("beenden");
		beenden.addActionListener(this);
		datei.add(oeffnen);
		datei.add(speichern);
		datei.add(optionen);
		datei.add(beenden);

		// Hilfe
		faq = new JMenuItem("F.A.Q");
		faq.addActionListener(this);
		about = new JMenuItem("Über");
		about.addActionListener(this);
		hilfe.add(faq);
		hilfe.add(about);
		menueLeiste.add(datei);
		menueLeiste.add(hilfe);

		// Tabelle
		sp = new JScrollPane();
		
		//Optionen
		op=new JFrame("Einstellungen");

	}

	public void actionPerformed(ActionEvent object) {
		if (object.getSource() == oeffnen) {
			System.out.println("öffnen wurde angeklickt");
			openDialog();
		}
		if (object.getSource() == speichern) {
			System.out.println("speichern wurde angeklickt");
			speichernDialog();
		}
		if (object.getSource() == optionen) {
			System.out.println("optionen wurde angeklickt");
			sp.add(op,BorderLayout.CENTER);

		}
		if (object.getSource() == beenden) {
			System.out.println("beenden wurde angeklickt");
		}
		if (object.getSource() == faq) {
			System.out.println("faq wurde angeklickt");
		}
		if (object.getSource() == about) {
			System.out.println("über wurde angeklickt");
		}
	}

	public void openDialog() {
		fd = new JFileChooser();
		FileNameExtensionFilter filter = new FileNameExtensionFilter(
				"Txt 6 CSV Daten", "txt", "csv");
		fd.setFileFilter(filter);
		fd.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);

		int returnVal = fd.showOpenDialog(frame);
		if (returnVal == JFileChooser.APPROVE_OPTION) {
			oFile = fd.getSelectedFile();
			System.out.println(oFile.getAbsolutePath());
			System.out.println("Sie haben volgende Datei ausgewählt: "
					+ fd.getSelectedFile().getName());
			;
			System.out.println("der Pfad lautet : "
					+ fd.getSelectedFile().getPath());
			fd.setCurrentDirectory(null);

		}

		if (returnVal == JFileChooser.CANCEL_OPTION)
			System.out.println("Abbruch wurde gedrückt !");

	}

	public void speichernDialog() {
		fd = new JFileChooser();
		FileNameExtensionFilter filter = new FileNameExtensionFilter(
				"ICS Datei", "ics");
		fd.setFileFilter(filter);
		fd.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);

		int returnVal = fd.showSaveDialog(frame);
		if (returnVal == JFileChooser.APPROVE_OPTION) {
			sFile = new File(fd.getSelectedFile().getAbsoluteFile().toString()
					+ ".ics");
			System.out.println("sie haben eine Datei gespeichert");
			System.out.println(sFile);
		}

	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		new GuiDemo1();

	}

}
 
also du könntest 2 verschiedene Panel machen, die du jeweils über die Menü klicks sichtbar/unsichtbar machst und so zwischen Optionen/Normal-Modus hin und her wechselst ... siehe CardLayout
 
Zuletzt bearbeitet:
Hallo,
ich bastle grad ein wenig mit einer GUI und habe jetzt das Problem das ich gern ein JFrame in das JScrollpane setzen möchte das ich auch wieder dort entfernen kann wenn alle einstellungen getätigt wurden.
Wie kann ich das bewerkstelligen?

Ein JFrame in ein JScrollpane setzen? Hört sich schon etwas seltsam an. Der JFrame sollte eigentlich dein Programmfenster sein. Nimm doch für deinen Einstellungsdialog ein JDialog, den du öffnest, die Einstellungen vornimmst und dann einfach wieder schliesst.
 
danke,
habs mal ausprobiert, wenn ich mit den Funktionen klar komme sokllte es gehen.
Das Problem was ich da jedoch bei sehe ist, wie verhindere ich das man während der Dialog angezeigt wirdauch das Hauptframe auswählen kann. Dann verschwindet nämlicvh der Dialog in den Hintergrund. Das hauptfenster soll erst nach dem schließen des dialoges wieder zu verwenden sein.
MfG Fritz
 
Du kannst den JDialog modal setzen
Code:
setModal(true)
, dann läuft das so, wie du es gerne hättest.
 
Hallo, habs grad mal mit CardLayout versucht, krieg es aber nicht ganz hin. wenn ich Optionen anwähle gibt es Ferhler...
Cardlayout ist vom aussehen und der funktionalität wohl das beste aber wenn ichs nicht hinkriege bleib ich wohl bei JDialog. hier aktueller Code (mit fehlermeldung):
Hab eine NullPointerException, weis aber nicht genau was ich hier falsch mache,
Code:
layout.show(jp1, opt);

Java:
package GuiDemo;

import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;

import javax.swing.JDialog;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.UIManager;
import javax.swing.filechooser.FileNameExtensionFilter;

public class GuiDemo1 extends JFrame implements ActionListener {

	
	CardLayout layout;
	String opt="opt", tab="tab";
	JFrame frame;
	JLabel op;
	JMenuBar menueLeiste;
	JMenu datei;
	JMenuItem oeffnen;
	JMenuItem speichern;
	JMenuItem optionen;
	JMenuItem beenden;
	JMenu hilfe;
	JMenuItem faq;
	JMenuItem about;
	JFileChooser fd;

	File oFile, sFile;// oFile = Quelldatei; sFeile = Zieldatei
	JPanel jp1;
	JScrollPane sp;

	// Konstruktor
	GuiDemo1() {
		frame = new JFrame("Kalender Konverter");
		try {
			UIManager
					.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
		} catch (Exception e) {
			e.printStackTrace();
		}
		frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
		frame.setSize(640, 480);
		frame.setLocationRelativeTo(null);

		erstelleKomponente();
		addKomponente();

		frame.setVisible(true);

	}

	// Komponenten adden
	private void addKomponente() {
		frame.getContentPane().add(menueLeiste, BorderLayout.NORTH);
		jp1.add(sp , tab);
		jp1.add(op , opt);
		frame.getContentPane().add(jp1, BorderLayout.CENTER);
//		layout.show(jp1, "tab");
	}

	public void erstelleKomponente() {

		// erstelleKomponente();
		// Datei
		menueLeiste = new JMenuBar();
		datei = new JMenu("Datei");
		hilfe = new JMenu("Hilfe");
		oeffnen = new JMenuItem("Öffnen");
		oeffnen.addActionListener(this);
		speichern = new JMenuItem("speichern");
		speichern.addActionListener(this);
		optionen = new JMenuItem("optionen");
		optionen.addActionListener(this);
		beenden = new JMenuItem("beenden");
		beenden.addActionListener(this);
		datei.add(oeffnen);
		datei.add(speichern);
		datei.add(optionen);
		datei.add(beenden);

		// Hilfe
		faq = new JMenuItem("F.A.Q");
		faq.addActionListener(this);
		about = new JMenuItem("Über");
		about.addActionListener(this);
		hilfe.add(faq);
		hilfe.add(about);
		menueLeiste.add(datei);
		menueLeiste.add(hilfe);

		//Panel 1
		jp1 =new JPanel(new CardLayout());
		
		
		// Tabelle
		sp = new JScrollPane();
		sp.setLayout(layout);
		
		//Optionen
		op=new JLabel("test");
//		op.setTitle("Optionen");
		//op.setSize(300,300);
		//op.setLocationRelativeTo(frame);
		op.setLayout(layout);

	}

	public void actionPerformed(ActionEvent object) {
		if (object.getSource() == oeffnen) {
			System.out.println("öffnen wurde angeklickt");
			openDialog();
		}
		if (object.getSource() == speichern) {
			System.out.println("speichern wurde angeklickt");
			speichernDialog();
		}
		if (object.getSource() == optionen) {
			System.out.println("optionen wurde angeklickt");
			layout.show(jp1, opt);

		}
		if (object.getSource() == beenden) {
			System.out.println("beenden wurde angeklickt");
		}
		if (object.getSource() == faq) {
			System.out.println("faq wurde angeklickt");
		}
		if (object.getSource() == about) {
			System.out.println("über wurde angeklickt");
		}
	}

	public void openDialog() {
		fd = new JFileChooser();
		FileNameExtensionFilter filter = new FileNameExtensionFilter(
				"Txt 6 CSV Daten", "txt", "csv");
		fd.setFileFilter(filter);
		fd.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);

		int returnVal = fd.showOpenDialog(frame);
		if (returnVal == JFileChooser.APPROVE_OPTION) {
			oFile = fd.getSelectedFile();
			System.out.println(oFile.getAbsolutePath());
			System.out.println("Sie haben volgende Datei ausgewählt: "
					+ fd.getSelectedFile().getName());
			;
			System.out.println("der Pfad lautet : "
					+ fd.getSelectedFile().getPath());
			fd.setCurrentDirectory(null);

		}

		if (returnVal == JFileChooser.CANCEL_OPTION)
			System.out.println("Abbruch wurde gedrückt !");

	}

	public void speichernDialog() {
		fd = new JFileChooser();
		FileNameExtensionFilter filter = new FileNameExtensionFilter(
				"ICS Datei", "ics");
		fd.setFileFilter(filter);
		fd.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);

		int returnVal = fd.showSaveDialog(frame);
		if (returnVal == JFileChooser.APPROVE_OPTION) {
			sFile = new File(fd.getSelectedFile().getAbsoluteFile().toString()
					+ ".ics");
			System.out.println("sie haben eine Datei gespeichert");
			System.out.println(sFile);
		}

	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		new GuiDemo1();

	}

}
 
Habs rausgekriegt,:toll:
Ich werde noch ein wenig basteln, ein paar sachen (wie zB die Ränder) muss ich noch anpassen und mir ein vernünftiges Options Feld bauen.

Danke erst mal!!
MfG Fritz

hier der funktionierende Code:
Java:
package GuiDemo;

import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;

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.JPanel;
import javax.swing.JScrollPane;
import javax.swing.UIManager;
import javax.swing.filechooser.FileNameExtensionFilter;

public class GuiDemo1 extends JFrame implements ActionListener {

	
	CardLayout layout;
	String opt="opt", tab="tab";
	JFrame frame;
	JPanel op;
	JMenuBar menueLeiste;
	JMenu datei;
	JMenuItem oeffnen;
	JMenuItem speichern;
	JMenuItem optionen;
	JMenuItem beenden;
	JMenu hilfe;
	JMenuItem faq;
	JMenuItem about;
	JFileChooser fd;

	JButton btnOptBeenden;
	
	File oFile, sFile;// oFile = Quelldatei; sFeile = Zieldatei
	JPanel jp1;
	JScrollPane sp;

	// Konstruktor
	GuiDemo1() {
		frame = new JFrame("Kalender Konverter");
		try {
			UIManager
					.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
		} catch (Exception e) {
			e.printStackTrace();
		}
		frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
		frame.setSize(640, 480);
		frame.setLocationRelativeTo(null);

		erstelleKomponente();
		addKomponente();

		frame.setVisible(true);

	}

	// Komponenten adden
	private void addKomponente() {
		frame.getContentPane().add(menueLeiste, BorderLayout.NORTH);
		jp1.add(sp , tab);
		jp1.add(op , opt);
		frame.getContentPane().add(jp1, BorderLayout.CENTER);
//		layout.show(jp1, "tab");
	}

	public void erstelleKomponente() {

		// erstelleKomponente();
		// Datei
		menueLeiste = new JMenuBar();
		datei = new JMenu("Datei");
		hilfe = new JMenu("Hilfe");
		oeffnen = new JMenuItem("Öffnen");
		oeffnen.addActionListener(this);
		speichern = new JMenuItem("speichern");
		speichern.addActionListener(this);
		optionen = new JMenuItem("optionen");
		optionen.addActionListener(this);
		beenden = new JMenuItem("beenden");
		beenden.addActionListener(this);
		datei.add(oeffnen);
		datei.add(speichern);
		datei.add(optionen);
		datei.add(beenden);

		// Hilfe
		faq = new JMenuItem("F.A.Q");
		faq.addActionListener(this);
		about = new JMenuItem("Über");
		about.addActionListener(this);
		hilfe.add(faq);
		hilfe.add(about);
		menueLeiste.add(datei);
		menueLeiste.add(hilfe);

		//Panel 1
		jp1 =new JPanel(new CardLayout());
		
		
		// Tabelle
		sp = new JScrollPane();
		sp.setLayout(layout);
		
		//Optionen
		op=new JPanel();
		op.setName("Optionen");
		btnOptBeenden=new JButton("Beenden");
		btnOptBeenden.addActionListener(this);
		op.add(btnOptBeenden,BorderLayout.LINE_END);
		//op.setSize(300,300);
		//op.setLocationRelativeTo(frame);
//		op.setLayout(layout);

	}

	public void actionPerformed(ActionEvent object) {
		if (object.getSource() == oeffnen) {
			System.out.println("öffnen wurde angeklickt");
			openDialog();
		}
		if (object.getSource() == speichern) {
			System.out.println("speichern wurde angeklickt");
			speichernDialog();
		}
		if (object.getSource() == optionen) {
			System.out.println("optionen wurde angeklickt");
			layout=(CardLayout)jp1.getLayout();
			layout.show(jp1, opt);

		}
		if (object.getSource() == beenden) {
			System.out.println("beenden wurde angeklickt");
			
		}
		if (object.getSource() == faq) {
			System.out.println("faq wurde angeklickt");
		}
		if (object.getSource() == about) {
			System.out.println("über wurde angeklickt");
		}
		if (object.getSource() == btnOptBeenden){
			layout=(CardLayout)jp1.getLayout();
			layout.show(jp1, tab);
		}
	}

	public void openDialog() {
		fd = new JFileChooser();
		FileNameExtensionFilter filter = new FileNameExtensionFilter(
				"Txt 6 CSV Daten", "txt", "csv");
		fd.setFileFilter(filter);
		fd.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);

		int returnVal = fd.showOpenDialog(frame);
		if (returnVal == JFileChooser.APPROVE_OPTION) {
			oFile = fd.getSelectedFile();
			System.out.println(oFile.getAbsolutePath());
			System.out.println("Sie haben volgende Datei ausgewählt: "
					+ fd.getSelectedFile().getName());
			;
			System.out.println("der Pfad lautet : "
					+ fd.getSelectedFile().getPath());
			fd.setCurrentDirectory(null);

		}

		if (returnVal == JFileChooser.CANCEL_OPTION)
			System.out.println("Abbruch wurde gedrückt !");

	}

	public void speichernDialog() {
		fd = new JFileChooser();
		FileNameExtensionFilter filter = new FileNameExtensionFilter(
				"ICS Datei", "ics");
		fd.setFileFilter(filter);
		fd.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);

		int returnVal = fd.showSaveDialog(frame);
		if (returnVal == JFileChooser.APPROVE_OPTION) {
			sFile = new File(fd.getSelectedFile().getAbsoluteFile().toString()
					+ ".ics");
			System.out.println("sie haben eine Datei gespeichert");
			System.out.println(sFile);
		}

	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		new GuiDemo1();

	}

}
 

Neue Themen


Zurück
Oben