S
Seppelxxl
Gast
Hallo in meinem Code ist der folgende Fehler:
28: variable gbc might not have been initialized gbc.fill = GridBagConstraints.BOTH;
Wo liegt der Fehler? Hier der Code.
// Ein Funktionenplotter
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
// Hauptfenster von Swing-Klasse JFrame ableiten
public class Cronik2 extends JFrame {
int aktFunktion = 0;
public static void main(String[] args) {
Cronik2 fenster = new Cronik2 ("FamilienCronik2");
fenster.pack();
fenster.setSize(600,500);
fenster.setResizable(false);
fenster.setVisible(true);
}
// Im Konstruktor werden die Canvas-Malfläche und
// Schaltflächen zur Auswahl der Funktionen angelegt
Cronik2 (String titel) {
super(titel);
GridBagLayout gbl = new GridBagLayout();
GridBagConstraints gbc;
//einfügend er Objekte ohne Schaltfläschen
Panel panel1 = new Panel();
panel1.setLayout(gbl);
gbc.fill = GridBagConstraints.BOTH;
// Die Abständer der einzelnen GUI-Elemente zu den gedachten Gitterlinien festgelegen:
gbc.insets = new Insets(2,2,2,2);
//Menü
JMenuBar menueleiste =new JMenuBar();
JMenu menu1 =new JMenu("Programm");
JMenu menu2 =new JMenu("Datenbank");
JMenuItem item1 =new JMenuItem("Cronik2 laden");
JMenuItem item2 =new JMenuItem("Cronik2 speichern");
JMenuItem item3 =new JMenuItem("Programm beenden");
menu1.add(item1);
menu1.add(item2);
menu1.add(item3);
JMenuItem item4 =new JMenuItem("Person suchen");
JMenuItem item5 =new JMenuItem("Stammbaum anzeigen");
menu2.add(item4);
menu2.add(item5);
menueleiste.add(menu1);
menueleiste.add(menu2);
setJMenuBar(menueleiste);
//Listen
List list = new List(10);
gbl.setConstraints(list, gbc);
panel1.add(list);
// Infos
JLabel text1 =new JLabel("Name");
JLabel text2 =new JLabel("Vorname");
JLabel text3 =new JLabel("Name");
JLabel text4 =new JLabel("Name");
JLabel text5 =new JLabel("Name");
JLabel text6 =new JLabel("Name");
JLabel text7 =new JLabel("Name");
JLabel text8 =new JLabel("Name");
JLabel text9 =new JLabel("Name");
gbc.gridx = 0;
gbc.gridheight = 1;
gbc.gridwidth = 1;
gbc.gridy = 1;
gbl.setConstraints(text1 , gbc);
panel1.add(text1 );
gbc.gridy = 2;
gbl.setConstraints(text2 , gbc);
panel1.add(text2 );
gbc.gridy = 3;
gbl.setConstraints(text3 , gbc);
panel1.add(text3 );
gbc.gridy = 4;
gbl.setConstraints(text4 , gbc);
panel1.add(text4 );
gbc.gridy = 5;
gbl.setConstraints(text5 , gbc);
panel1.add(text5 );
gbc.gridy = 6;
gbl.setConstraints(text6 , gbc);
panel1.add(text6 );
gbc.gridy = 7;
gbl.setConstraints(text7 , gbc);
panel1.add(text7 );
gbc.gridy = 8;
gbl.setConstraints(text8 , gbc);
panel1.add(text8 );
gbc.gridy = 9;
gbl.setConstraints(text9 , gbc);
panel1.add(text9 );
JTextField p_name =new JTextField(25);
JTextField p_vorname =new JTextField( 25);
JTextField p_gebname =new JTextField( 25);
JTextField p_gebam =new JTextField( 25);
JTextField p_gebin =new JTextField( 25);
JTextField p_geschlecht =new JTextField( 25);
JTextField p_getauftam =new JTextField( 25);
JTextField p_getauftin =new JTextField( 25);
JTextField p_konfession =new JTextField( 25);
gbc.gridx = 1;
gbc.gridheight = 1;
gbc.gridwidth = 1;
gbc.gridy = 1;
gbl.setConstraints(p_name, gbc);
panel1.add(p_name);
gbc.gridy = 2;
gbl.setConstraints(p_vorname, gbc);
panel1.add(p_vorname);
gbc.gridy = 3;
gbl.setConstraints(p_gebname, gbc);
panel1.add(p_gebname);
gbc.gridy = 4;
gbl.setConstraints(p_gebam, gbc);
panel1.add(p_gebam);
gbc.gridy = 5;
gbl.setConstraints(p_gebin, gbc);
panel1.add(p_gebin);
gbc.gridy = 6;
gbl.setConstraints(p_geschlecht, gbc);
panel1.add(p_geschlecht);
gbc.gridy = 7;
gbl.setConstraints(p_getauftam, gbc);
panel1.add(p_getauftam);
gbc.gridy = 8;
gbl.setConstraints(p_getauftin, gbc);
panel1.add(p_getauftin);
gbc.gridy = 9;
gbl.setConstraints(p_konfession, gbc);
panel1.add(p_konfession);
// Kopf schaltfläschen
Panel panel2 = new Panel();
panel2.setLayout(new FlowLayout());
gbc.gridx=0;
gbc.gridy=0;
gbc.gridheight = 1;
JButton f1 = new JButton("V");
gbl.setConstraints(f1 , gbc);
panel2.add(f1);
gbc.gridx=1;
JButton f2 = new JButton("M");
gbl.setConstraints(f2 , gbc);
panel2.add(f2);
//Infos
//Bildfläche
//Listen
//Alles aufnehmen
setLayout(new GridBagLayout());
add(panel1);
// Die Ereignisbehandlung für die Schaltflächen
class CMeinActionLauscher implements ActionListener {
public void actionPerformed(ActionEvent e) {
String label;
label = e.getActionCommand();
if(label.equals("tan(x)"))
aktFunktion = 1;
else
aktFunktion = 2;
// Neuzeichnen veranlassen
}
}
// Die Lausch-Objekte anlegen
f1.addActionListener(new CMeinActionLauscher());
f2.addActionListener(new CMeinActionLauscher());
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
class CMeineCanvas extends Canvas {
// Konstruktor
CMeineCanvas() {
// den Hintergrund auf schwarz setzen
setBackground(Color.black);
// Vordergrund (=Zeichenfarbe) auf blau setzen
setForeground(Color.green);
}
// Die wichtigste Methode: hier wird gezeichnet!
public void paint(Graphics g) {
double x,y;
int xpos,ypos;
// Ursprung umsetzen
g.translate(150,150);
// Koordinatenachsen einzeichnen
g.setColor(Color.red);
g.drawLine(0,-150,0,150);
g.drawLine(-150,0,150,0);
g.drawString("-3",-150,12);
g.drawString("-3",4,147);
g.drawString("+3",135,12);
g.drawString("+3",4,-140);
// Farbe zum Zeichnen der Funktion
g.setColor(new Color(255,255,0));
// Wenn keine Funktion ausgewählt ist, nichts tun
if(aktFunktion == 0)
return;
for(x= -3.0; x<=3; x += 0.005) {
if(aktFunktion == 1)
y = Math.tan(x);
else
y = Math.pow(x,3);
xpos = (int) (x*50);
ypos = (int) (-y*50);
g.fillOval(xpos,ypos,3,3);
}
}
// Diese Methode liefert die minimale Größe der Canvas
public Dimension getMinimumSize() {
return new Dimension(300,300);
}
// Die Lieblingsgröße setzen wir auf die Minimalgröße
public Dimension getPreferredSize() {
return getMinimumSize();
}
}
} // Ende der Klasse CFunkPlotter
Der Code sieht noch kaotisch aus, es fehlen noch Code Teile, aber befor ich die MEthode mit den geschachtelten Layout angewendet habe hat es funktioniert. Danke für eure Hilfe
28: variable gbc might not have been initialized gbc.fill = GridBagConstraints.BOTH;
Wo liegt der Fehler? Hier der Code.
// Ein Funktionenplotter
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
// Hauptfenster von Swing-Klasse JFrame ableiten
public class Cronik2 extends JFrame {
int aktFunktion = 0;
public static void main(String[] args) {
Cronik2 fenster = new Cronik2 ("FamilienCronik2");
fenster.pack();
fenster.setSize(600,500);
fenster.setResizable(false);
fenster.setVisible(true);
}
// Im Konstruktor werden die Canvas-Malfläche und
// Schaltflächen zur Auswahl der Funktionen angelegt
Cronik2 (String titel) {
super(titel);
GridBagLayout gbl = new GridBagLayout();
GridBagConstraints gbc;
//einfügend er Objekte ohne Schaltfläschen
Panel panel1 = new Panel();
panel1.setLayout(gbl);
gbc.fill = GridBagConstraints.BOTH;
// Die Abständer der einzelnen GUI-Elemente zu den gedachten Gitterlinien festgelegen:
gbc.insets = new Insets(2,2,2,2);
//Menü
JMenuBar menueleiste =new JMenuBar();
JMenu menu1 =new JMenu("Programm");
JMenu menu2 =new JMenu("Datenbank");
JMenuItem item1 =new JMenuItem("Cronik2 laden");
JMenuItem item2 =new JMenuItem("Cronik2 speichern");
JMenuItem item3 =new JMenuItem("Programm beenden");
menu1.add(item1);
menu1.add(item2);
menu1.add(item3);
JMenuItem item4 =new JMenuItem("Person suchen");
JMenuItem item5 =new JMenuItem("Stammbaum anzeigen");
menu2.add(item4);
menu2.add(item5);
menueleiste.add(menu1);
menueleiste.add(menu2);
setJMenuBar(menueleiste);
//Listen
List list = new List(10);
gbl.setConstraints(list, gbc);
panel1.add(list);
// Infos
JLabel text1 =new JLabel("Name");
JLabel text2 =new JLabel("Vorname");
JLabel text3 =new JLabel("Name");
JLabel text4 =new JLabel("Name");
JLabel text5 =new JLabel("Name");
JLabel text6 =new JLabel("Name");
JLabel text7 =new JLabel("Name");
JLabel text8 =new JLabel("Name");
JLabel text9 =new JLabel("Name");
gbc.gridx = 0;
gbc.gridheight = 1;
gbc.gridwidth = 1;
gbc.gridy = 1;
gbl.setConstraints(text1 , gbc);
panel1.add(text1 );
gbc.gridy = 2;
gbl.setConstraints(text2 , gbc);
panel1.add(text2 );
gbc.gridy = 3;
gbl.setConstraints(text3 , gbc);
panel1.add(text3 );
gbc.gridy = 4;
gbl.setConstraints(text4 , gbc);
panel1.add(text4 );
gbc.gridy = 5;
gbl.setConstraints(text5 , gbc);
panel1.add(text5 );
gbc.gridy = 6;
gbl.setConstraints(text6 , gbc);
panel1.add(text6 );
gbc.gridy = 7;
gbl.setConstraints(text7 , gbc);
panel1.add(text7 );
gbc.gridy = 8;
gbl.setConstraints(text8 , gbc);
panel1.add(text8 );
gbc.gridy = 9;
gbl.setConstraints(text9 , gbc);
panel1.add(text9 );
JTextField p_name =new JTextField(25);
JTextField p_vorname =new JTextField( 25);
JTextField p_gebname =new JTextField( 25);
JTextField p_gebam =new JTextField( 25);
JTextField p_gebin =new JTextField( 25);
JTextField p_geschlecht =new JTextField( 25);
JTextField p_getauftam =new JTextField( 25);
JTextField p_getauftin =new JTextField( 25);
JTextField p_konfession =new JTextField( 25);
gbc.gridx = 1;
gbc.gridheight = 1;
gbc.gridwidth = 1;
gbc.gridy = 1;
gbl.setConstraints(p_name, gbc);
panel1.add(p_name);
gbc.gridy = 2;
gbl.setConstraints(p_vorname, gbc);
panel1.add(p_vorname);
gbc.gridy = 3;
gbl.setConstraints(p_gebname, gbc);
panel1.add(p_gebname);
gbc.gridy = 4;
gbl.setConstraints(p_gebam, gbc);
panel1.add(p_gebam);
gbc.gridy = 5;
gbl.setConstraints(p_gebin, gbc);
panel1.add(p_gebin);
gbc.gridy = 6;
gbl.setConstraints(p_geschlecht, gbc);
panel1.add(p_geschlecht);
gbc.gridy = 7;
gbl.setConstraints(p_getauftam, gbc);
panel1.add(p_getauftam);
gbc.gridy = 8;
gbl.setConstraints(p_getauftin, gbc);
panel1.add(p_getauftin);
gbc.gridy = 9;
gbl.setConstraints(p_konfession, gbc);
panel1.add(p_konfession);
// Kopf schaltfläschen
Panel panel2 = new Panel();
panel2.setLayout(new FlowLayout());
gbc.gridx=0;
gbc.gridy=0;
gbc.gridheight = 1;
JButton f1 = new JButton("V");
gbl.setConstraints(f1 , gbc);
panel2.add(f1);
gbc.gridx=1;
JButton f2 = new JButton("M");
gbl.setConstraints(f2 , gbc);
panel2.add(f2);
//Infos
//Bildfläche
//Listen
//Alles aufnehmen
setLayout(new GridBagLayout());
add(panel1);
// Die Ereignisbehandlung für die Schaltflächen
class CMeinActionLauscher implements ActionListener {
public void actionPerformed(ActionEvent e) {
String label;
label = e.getActionCommand();
if(label.equals("tan(x)"))
aktFunktion = 1;
else
aktFunktion = 2;
// Neuzeichnen veranlassen
}
}
// Die Lausch-Objekte anlegen
f1.addActionListener(new CMeinActionLauscher());
f2.addActionListener(new CMeinActionLauscher());
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
class CMeineCanvas extends Canvas {
// Konstruktor
CMeineCanvas() {
// den Hintergrund auf schwarz setzen
setBackground(Color.black);
// Vordergrund (=Zeichenfarbe) auf blau setzen
setForeground(Color.green);
}
// Die wichtigste Methode: hier wird gezeichnet!
public void paint(Graphics g) {
double x,y;
int xpos,ypos;
// Ursprung umsetzen
g.translate(150,150);
// Koordinatenachsen einzeichnen
g.setColor(Color.red);
g.drawLine(0,-150,0,150);
g.drawLine(-150,0,150,0);
g.drawString("-3",-150,12);
g.drawString("-3",4,147);
g.drawString("+3",135,12);
g.drawString("+3",4,-140);
// Farbe zum Zeichnen der Funktion
g.setColor(new Color(255,255,0));
// Wenn keine Funktion ausgewählt ist, nichts tun
if(aktFunktion == 0)
return;
for(x= -3.0; x<=3; x += 0.005) {
if(aktFunktion == 1)
y = Math.tan(x);
else
y = Math.pow(x,3);
xpos = (int) (x*50);
ypos = (int) (-y*50);
g.fillOval(xpos,ypos,3,3);
}
}
// Diese Methode liefert die minimale Größe der Canvas
public Dimension getMinimumSize() {
return new Dimension(300,300);
}
// Die Lieblingsgröße setzen wir auf die Minimalgröße
public Dimension getPreferredSize() {
return getMinimumSize();
}
}
} // Ende der Klasse CFunkPlotter
Der Code sieht noch kaotisch aus, es fehlen noch Code Teile, aber befor ich die MEthode mit den geschachtelten Layout angewendet habe hat es funktioniert. Danke für eure Hilfe