JPanel zu JFrame hinzufügen

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo Leute,

ich hab folgendes Problem. Ich habe einen Klasse GUI mit BoarderLayout, welche ein JFrame ist. Eine Klasse GUIStrg zum steuern der Aktionen und zwei weitere Klassen, welche JPanels sein sollen und mit verschieden dingen wie Textfelder, Labels usw. bestückt sind.

So weit so gut, ich möchte nun, wenn ich das Programm starte zunächst einmal nur das Menü oben sehen (was auch geht) und wenn ich im Menu "Neu" auswähle sich ein JPanel im Center des Frames hinzugefügt wird. Das JPanel soll eines von den zwei weiteren Klassen sein. Aber das bekomme ich nicht hin also schon irgendwie aber es kommen nur Fehlermeldungen.

Vielleicht kann mir ja einer von Euch helfen, wenn Ihr meinen Quelltext braucht kein Prob. der kann kommen.
 
G

Guest

Gast
Also folgende Fehlermeldungen werden ausgegeben:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at GUIStrg.neuesDoc(GUIStrg.java:61)
at GUIStrg.actionPerformed(GUIStrg.java:18)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
 

Quaxli

Top Contributor
Eine NullPointerException deutet eigentlich immer darauf hin, daß ein Objekt nicht instanziiert ist. Poste doch mal ein Stück Code um die Zeile herum, wo die Exception geworfen wird, als Zeile 61 in GUIStrg und ein paar Zeilen davor.
 

snowman85

Mitglied
Ich hab hier mal das eine JPanel und danach die GUIStrg.

Code:
import java.awt.*;

import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;


public class BriefPanel extends JPanel {
	private GUI gui;
	private JPanel briefPanel;
	private XmlDatenPanel xmlDatenPanel;
	private JTextArea datum, empfaenger, absender, betreff, anrede, text, name, anlagen;
	private JLabel ldatum, lempfaenger, labsender, lbetreff, lanrede, ltext, lgrusformel, lname, lanlagen;
	private JComboBox grusformel;
	private Container cont;
	
	public BriefPanel(){
		
		// Panel fuer Container im center des Frames
		briefPanel = new JPanel();
		setBackground(Color.orange);
		setVisible(false);
		
		// Container erzeugen
		cont = new Container();
		
		// Panel mit Container fuellen
		briefPanel.add(cont);
		
		GridBagLayout gbl = new GridBagLayout();
		
		// Container mit GridLayout fuellen
		cont.setLayout(gbl);
		
		GridBagConstraints gbc = new GridBagConstraints();
		
		// Komponenten werden erstellt
		ldatum = new JLabel("Datum:");
		datum = new JTextArea("tt.mm.jjjj", 1, 20);
		labsender = new JLabel("Absender:");
		absender = new JTextArea(1,40);
		lempfaenger = new JLabel("Empfänger:");
		empfaenger = new JTextArea(1,40);
		lbetreff = new JLabel("Betreff:");
		betreff = new JTextArea(1,20);
		lanrede = new JLabel("Anrede:");
		anrede = new JTextArea(1,20);
		ltext = new JLabel("Text:");
		text = new JTextArea(3,80);
		lgrusformel = new JLabel("Grußformel:");
		grusformel = new JComboBox();
		lname = new JLabel("Unterschrift:");
		name = new JTextArea(1,10);
		lanlagen = new JLabel("Anlagen:");
		anlagen = new JTextArea(1,10);
		
		// fügt Komponenten an Kontainer
		addComponent(cont, gbl, ldatum, 0, 0, 3, 1, 0.0, 0.0 );
		addComponent(cont, gbl, datum, 0, 1, 2, 1, 0, 0.0 );
		addComponent(cont, gbl, labsender, 0, 2, 3, 1, 0, 1.0 );
		addComponent(cont, gbl, absender, 0, 3, 2, 1, 0, 1.0 );
		addComponent(cont, gbl, lempfaenger, 0, 4, 3, 1, 0, 1.0 );
		addComponent(cont, gbl, empfaenger, 0, 5, 2, 1, 0, 1.0 );
		addComponent(cont, gbl, lbetreff, 0, 6, 3, 1, 0, 1.0 );
		addComponent(cont, gbl, betreff, 0, 7, 3, 1, 0, 1.0 );
		addComponent(cont, gbl, lanrede, 0, 8, 3, 1, 0, 1.0 );
		addComponent(cont, gbl, anrede, 0, 9, 3, 1, 0, 1.0 );
		addComponent(cont, gbl, ltext, 0, 10, 3, 1, 0, 1.0 );
		addComponent(cont, gbl, text, 0, 11, 3, 1, 0, 1.0 );
		addComponent(cont, gbl, lgrusformel, 0, 12, 3, 1, 0, 1.0 );
		addComponent(cont, gbl, grusformel, 0, 13, 2, 1, 0, 1.0 );
		addComponent(cont, gbl, lname, 0, 14, 3, 1, 0, 1.0 );
		addComponent(cont, gbl, name, 0, 15, 1, 1, 0, 1.0 );
		addComponent(cont, gbl, lanlagen, 0, 16, 3, 1, 0, 1.0 );
		addComponent(cont, gbl, anlagen, 0, 17, 1, 1, 0, 1.0 );
		
		validate();
	}
	
	public void panelSichtbar(){
		BriefPanel briefPanel = new BriefPanel();
		briefPanel.setVisible(true);
		gui.add(briefPanel);
	}
	
	/**
	 * 
	 * @param cont
	 * @param gbl
	 * @param c
	 * @param x
	 * @param y
	 * @param width
	 * @param height
	 * @param weightx
	 * @param weighty
	 * 
	 * Hängt Objekte an GridBagLayout
	 */
	static void addComponent( Container cont, GridBagLayout gbl, Component c, 
			int x, int y, int width, int height, double weightx, double weighty ){
		
		GridBagConstraints gbc = new GridBagConstraints();
		gbc.fill = GridBagConstraints.BOTH;
		gbc.gridx = x; 
		gbc.gridy = y;
		gbc.gridwidth = width; 
		gbc.gridheight = height;
		gbc.weightx = weightx; // verteilung des horizontalen und vertikalen platzes
		gbc.weighty = weighty;
		gbl.setConstraints( c, gbc );
		cont.add( c );
		}
	
}

Code:
import java.awt.event.*;
import javax.swing.*;


public class GUIStrg implements ActionListener{
	private GUI gui;
	private BriefPanel briefPanel;
	private XmlDatenPanel xmlDatenPanel;
	
	public GUIStrg(GUI g){
		gui = g;
	}
	
	public void actionPerformed(ActionEvent e){
		String unters = e.getActionCommand();
		if (unters.equals("Neu"))
		{
			neuesDoc();
		}
		else if (unters.equals("Öffnen"))
		{
			openDoc();
		}
		else if (unters.equals("Speichern")||unters.equals("Speichern unter..."))
		{
			saveDoc();
		}
		else if (unters.equals("Drucken"))
		{
			drucken();
		}
		else if (unters.equals("HTML")||unters.equals("PFD")||unters.equals("WORD"))
		{
			konvertieren();
		}
		else if (unters.equals("Beenden"))
		{
			ende();
		}
		else if (unters.equals("Deutsch")||unters.equals("Englisch"))
		{
			sprache();
		}
		else if (unters.equals("Einstellungen"))
		{
			einstellungen();
		}
		else if (unters.equals("Info"))
		{
			info();
		}
		else if (unters.equals("Hilfe"))
		{
			openDoc();
		}
	}
	
	// Methoden fuer Dokumentenmenue
	
	public void neuesDoc(){
		briefPanel.panelSichtbar();
	}
	
	public void openDoc(){
		JFileChooser fc = new JFileChooser();
		int state = fc.showOpenDialog( null );
	}
	
	public void saveDoc(){
		JFileChooser fc = new JFileChooser();
		int state = fc.showSaveDialog( null );
	}
	
	public void drucken(){
		
	}
	
	public void konvertieren(){
		
	}
	
	public void ende(){
		System.exit(0);
	}
	
	// Methoden fuer Optionsmenue
	
	public void sprache(){
		
	}
	
	public void einstellungen(){
		
	}
	
	// Methoden fuer Hilfemenue
	
	public void info(){
		
	}
	
	public void hilfe(){
		
	}
}
 

snowman85

Mitglied
hab es jetzt in der Methode gemacht

Code:
	public void neuesDoc(){
		briefPanel = new BriefPanel();
		briefPanel.panelSichtbar();
	}

aber das geht immernoch nich :-(
 

susa.

Mitglied
vllt gibts die Probleme, weil du briefPanel einmal lokal und einmal global neu anlegst? also in der briefpanel-klasse, einmal als JPanel und einmal als BriefPanel. ?
 
S

Student1903

Gast
Hallo,

falls ich meine GUI-Komponente in Java ausdrucken lasse, dann gibt es das Problem, dass die Komponenten nicht vollständig ausgedruckt werden, da die pixels von meinen Komponenten wahrscheinlich mehr sind als die meines Druckers. Ich bekomme nur ein viertel meines GUI-Komponentes ausgedruckt. Dann sind die Schrieften auch sehr groß.

Meine Frage: Wie sorge ich dafür dass meine GUI-Komponente genau so ausgedruckt wird, wie es auf ein DIN A4 passt ?
Ich möchte es vollständig gedruckt haben und nicht nur das erste viertel meines Komponentes. Ich schaffe es aber nicht, was muss ich machen?

Ich benutze folgende Hilfsklasse und rufe dann
Code:
PrintUtilities.printComponent(componentToBePrinted)
auf.

Code:
import java.awt.*;

import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.swing.*;
import java.awt.print.*;

/** A simple utility class that lets you very simply print
 *  an arbitrary component. Just pass the component to the
 *  PrintUtilities.printComponent. The component you want to
 *  print doesn't need a print method and doesn't have to
 *  implement any interface or do anything special at all.
 *  


 *  If you are going to be printing many times, it is marginally more 
 *  efficient to first do the following:
 *  <PRE>
 *    PrintUtilities printHelper = new PrintUtilities(theComponent);
 *  </PRE>
 *  then later do printHelper.print(). But this is a very tiny
 *  difference, so in most cases just do the simpler
 *  PrintUtilities.printComponent(componentToBePrinted).
 *
 *  7/99 Marty Hall, [url]http://www.apl.jhu.edu/~hall/java/[/url]
 *  May be freely used or adapted.
 */

public class PrintUtilities implements Printable {
  private Component componentToBePrinted;

  public static void printComponent(Component c) {
    new PrintUtilities(c).print();
  }
  
  public PrintUtilities(Component componentToBePrinted) {
    this.componentToBePrinted = componentToBePrinted;
  }
  
  public void print() {
    PrinterJob printJob = PrinterJob.getPrinterJob();
    PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
    PageFormat pf = printJob.pageDialog(aset);
    printJob.setPrintable(this, pf);
    if (printJob.printDialog())
      try {
        printJob.print();
      } catch(PrinterException pe) {
        System.out.println("Error printing: " + pe);
      }
  }

  public int print(Graphics g, PageFormat pageFormat, int pageIndex) {
    if (pageIndex > 0) {
      return(NO_SUCH_PAGE);
    } else {
      Graphics2D g2d = (Graphics2D)g;
      g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
      disableDoubleBuffering(componentToBePrinted);
      componentToBePrinted.paint(g2d);
      enableDoubleBuffering(componentToBePrinted);
      return(PAGE_EXISTS);
    }
  }

  /** The speed and quality of printing suffers dramatically if
   *  any of the containers have double buffering turned on.
   *  So this turns if off globally.
   *  @see enableDoubleBuffering
   */
  public static void disableDoubleBuffering(Component c) {
    RepaintManager currentManager = RepaintManager.currentManager(c);
    currentManager.setDoubleBufferingEnabled(false);
  }

  /** Re-enables double buffering globally. */
  
  public static void enableDoubleBuffering(Component c) {
    RepaintManager currentManager = RepaintManager.currentManager(c);
    currentManager.setDoubleBufferingEnabled(true);
  }
}
[/code]
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C mehrere JPanel in ein JFrame bringen Java Basics - Anfänger-Themen 9
W 2 JPanel in einem JFrame Java Basics - Anfänger-Themen 4
Dechasa Interface JFrame mit mehreren Übereinander liegenden JPanel Java Basics - Anfänger-Themen 5
F JFrame resize verschiebt JPanel Java Basics - Anfänger-Themen 3
S JPanel wird versetzt auf JFrame gelegt Java Basics - Anfänger-Themen 2
B JPanel/JFrame in ein Applet umwandeln (Webfähig) Java Basics - Anfänger-Themen 7
K Erste Schritte Jframe Im Jpanel Java Basics - Anfänger-Themen 4
R JFrame über einen JPanel Java Basics - Anfänger-Themen 5
J Auf einem JPanel ein JFrame platzieren Java Basics - Anfänger-Themen 10
F Unterschied JPanel und JFrame Java Basics - Anfänger-Themen 5
Developer_X Ein JFrame in einem JPanel ?! Java Basics - Anfänger-Themen 4
C jframe bzw. jpanel aktualisieren Java Basics - Anfänger-Themen 13
G Oberflächen: lieber von JFrame oder JPanel erben? Java Basics - Anfänger-Themen 3
K JPanel, JFrame, paint() und wo ist mein Viereck ? Java Basics - Anfänger-Themen 19
B setBackground bei JFrame und JPanel Java Basics - Anfänger-Themen 15
M JFrame und JPanel Java Basics - Anfänger-Themen 6
E von JFrame zu JPanel und wieder zurück . Java Basics - Anfänger-Themen 9
B JFrame JPanel größe ändern Java Basics - Anfänger-Themen 3
richis-fragen Optisch JPanel BorderLayout vertikaler Rand dicker als horizontaler Rand Java Basics - Anfänger-Themen 4
N Klassen Hintergrundfarbe in JPanel ändert sich nicht Java Basics - Anfänger-Themen 3
J JSON mit einem JPanel Java Basics - Anfänger-Themen 3
J Ein mit UI-Designer erstelltes JPanel einblenden Java Basics - Anfänger-Themen 0
J Eine theoretische Frage zur Praxis - JPanel oder Canvas Java Basics - Anfänger-Themen 5
J Beim Start des Programms zB. eine Linie in JPanel ausgeben Java Basics - Anfänger-Themen 4
M HILFE JPanel - Graphics Java Basics - Anfänger-Themen 1
B Scrollbares Fenster (JScrollPane) mit JPanel scrollt nicht Java Basics - Anfänger-Themen 3
Zeppi JPanel responsive Grid Java Basics - Anfänger-Themen 0
J JPanel in JScrollPanel Java Basics - Anfänger-Themen 4
Elyt JPanel als HintergrundBild Java Basics - Anfänger-Themen 7
B Wie kann man an ein JPanel eine Scrollbar anheften? Java Basics - Anfänger-Themen 8
O Swing JPanel Java Basics - Anfänger-Themen 4
CptK Klassen JPanel nach Ablauf der Spielzeit neuladen Java Basics - Anfänger-Themen 2
S JPanel wird nicht angezeigt Java Basics - Anfänger-Themen 1
D Animation JPanel Java Basics - Anfänger-Themen 1
M JLabels "verrutschen" beim übergeben von JPanel Java Basics - Anfänger-Themen 2
D Auf angeklicktes JPanel zugreifen Java Basics - Anfänger-Themen 5
D JPanel mehrere Formen zeichnen Java Basics - Anfänger-Themen 5
D JPanel passt die Größe nicht an Java Basics - Anfänger-Themen 22
Y Webinhalt JPanel Java Basics - Anfänger-Themen 6
D Erste Schritte JPanel verschiebt Fenster via setVisible Java Basics - Anfänger-Themen 5
S JPanel variablenabhängig erstellen Java Basics - Anfänger-Themen 13
J Methoden Dinge auf einem JPanel paltzieren Java Basics - Anfänger-Themen 1
Z JPanel wird zweimal hinterinander gezeichnet.. Wieso? Java Basics - Anfänger-Themen 4
A altes JPanel entfernen und neues öffnen Java Basics - Anfänger-Themen 5
I A0-Format in jpanel anzeigen Java Basics - Anfänger-Themen 1
R NullPointerException wegen JPanel oder doch nicht ? Java Basics - Anfänger-Themen 7
J Probleme mit eigenem JPanel (IDE Eclipse) Java Basics - Anfänger-Themen 4
V jab ich eclipse verrückt gemacht :D ? array Jpanel, Jlabel Grafik Fehler / Frage Java Basics - Anfänger-Themen 5
R Focus auf JPanel im Thread Java Basics - Anfänger-Themen 9
I Problem mit JPanel Java Basics - Anfänger-Themen 0
B JPanel ändert die Hintergrundfarbe nicht Java Basics - Anfänger-Themen 2
F Threads funktionieren auf JPanel nicht Java Basics - Anfänger-Themen 1
C JPanel in MessageDialog Java Basics - Anfänger-Themen 1
S Inhalt von JPanel erst nach Resize sichtbar Java Basics - Anfänger-Themen 2
M Listener einerm JPanel hinzufuegen Java Basics - Anfänger-Themen 3
gamebreiti Methoden JPanel nach clearAll() und add neu zeichnen Java Basics - Anfänger-Themen 1
S vom JPanel aus durch Mouselistener Internet aufrufen Java Basics - Anfänger-Themen 6
Z JPanel bleibt leer Java Basics - Anfänger-Themen 2
E Bild per Verzeichnis/JFileChooser auf JPanel laden Java Basics - Anfänger-Themen 13
Q JPanel Java Basics - Anfänger-Themen 2
K Erste Schritte jpanel in einer klasse auslagern Java Basics - Anfänger-Themen 3
I Anfängerfrage JPanel repaint() Java Basics - Anfänger-Themen 6
N String auf JPanel bewegen Java Basics - Anfänger-Themen 6
S Layout mit JPanel in JScrollPanel funktioniert nicht Java Basics - Anfänger-Themen 3
S JPanel drucken -> PrinterException Java Basics - Anfänger-Themen 2
B JPanel -JTable Java Basics - Anfänger-Themen 2
H JPanel Hintergrund transparent setzen? Java Basics - Anfänger-Themen 10
A Input/Output Hashmap in einem JPanel via JList anzeigen Java Basics - Anfänger-Themen 8
L zoomen aus jpanel Java Basics - Anfänger-Themen 7
P Bekomme in meinen JPanel nur eine JComponente angezeigt Java Basics - Anfänger-Themen 7
A Methoden repaint() zeichnet JPanel falsch Java Basics - Anfänger-Themen 3
I Veränderungen am JPanel vom JDialog aus Java Basics - Anfänger-Themen 6
F JPanel zu klein Java Basics - Anfänger-Themen 5
D GUI - Objekte in JPanel nach oben schieben Java Basics - Anfänger-Themen 2
S JPanel wird nicht eingefügt Java Basics - Anfänger-Themen 3
P Netbeans Platform - JLabel und JPanel setLocation Problem Java Basics - Anfänger-Themen 2
Kenan89 JPanel mit JTable Java Basics - Anfänger-Themen 9
I JPanel in JPanel Java Basics - Anfänger-Themen 2
A Zugriff auf Komponente innerhalb einer JPanel Java Basics - Anfänger-Themen 8
S JPanel anzeige Java Basics - Anfänger-Themen 2
propra Wie mache ich einem JPanel mein bereits instanziertes Model bekannt Java Basics - Anfänger-Themen 9
T Zugreifen auf JPanel Java Basics - Anfänger-Themen 4
K JPanel auslagern Java Basics - Anfänger-Themen 9
J Paint Methode von JPanel aufrufen Java Basics - Anfänger-Themen 15
T Tastendruck simulieren in JPanel Java Basics - Anfänger-Themen 3
P JPanel in JTable einfügen Java Basics - Anfänger-Themen 23
E Erste Schritte Objekte werden in JPanel angedockt und maximiert Java Basics - Anfänger-Themen 7
M Componenten auf JPanel anzeigen Java Basics - Anfänger-Themen 2
F JPanel als JPG - weisse Fläche Java Basics - Anfänger-Themen 9
L Image laden und auf jPanel ausgeben Java Basics - Anfänger-Themen 7
M JLabel auf JPanel positionieren Java Basics - Anfänger-Themen 8
M Verständnisfrage zu JPanel Java Basics - Anfänger-Themen 3
M MouseListener funkioniert auf JPanel nicht Java Basics - Anfänger-Themen 8
D JPanel + ein JLabel Java Basics - Anfänger-Themen 8
B JPanel-Oberfläche speichern Java Basics - Anfänger-Themen 9
X JTable in JPanel in JTabbedPane mouseevent von jtable kommt nicht durch Java Basics - Anfänger-Themen 3
P GUI, JPanel Java Basics - Anfänger-Themen 7
H JPanel in andere Klasse übergeben Java Basics - Anfänger-Themen 7
D Grösse eines JPanel hinsichtlich LayoutManager festlegen Java Basics - Anfänger-Themen 4
B JPanel über anderem JPanel Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben