Hallo, also ein Fenster mit Bildfläche erzeugen ist kein Problem, aber eine Bildfläche in einem GridBagLayout einzubauen stell ich mich schwer an, es wird einfach nicht angezeigt. Brauch mal einen Tipp. Hier der Code:
Wenn jemand einen Tipp ahat wie ich den Code verbessern kann bin ich ganz ohr...
Wenn jemand einen Tipp ahat wie ich den Code verbessern kann bin ich ganz ohr...
Java:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Cronik2 extends JFrame {
int aktFunktion = 0;
int m_Xpos,m_Ypos;
Image m_aktBild;
JFrame m_fenster = new JFrame();
String m_dateiname;
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 = new GridBagConstraints();
//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);
// Infos
JLabel text1 =new JLabel("Name");
JLabel text2 =new JLabel("Vorname");
JLabel text3 =new JLabel("Geburtsname");
JLabel text4 =new JLabel("geboren am");
JLabel text5 =new JLabel("geboren in");
JLabel text6 =new JLabel("Geschlecht");
JLabel text7 =new JLabel("getauft am");
JLabel text8 =new JLabel("getauft in");
JLabel text9 =new JLabel("Konfession");
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(10);
JTextField p_vorname =new JTextField( 10);
JTextField p_gebname =new JTextField( 10);
JTextField p_gebam =new JTextField( 10);
JTextField p_gebin =new JTextField( 10);
JTextField p_geschlecht =new JTextField( 10);
JTextField p_getauftam =new JTextField( 10);
JTextField p_getauftin =new JTextField( 10);
JTextField p_konfession =new JTextField( 10);
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);
//Bildfläsche
CBildLeinwand m_bildanzeige = new CBildLeinwand();
m_dateiname = null;
m_aktBild = null;
gbc.gridx=1;
gbc.gridy=3;
gbc.gridheight = 20;
gbl.setConstraints(m_fenster , gbc);
panel1.add(m_fenster);
//Listen
gbc.gridy = 1;
gbc.gridx = 4;
gbc.gridheight = 20;
List list = new List(10);
gbl.setConstraints(list, gbc);
panel1.add(list);
// 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);
//Alles aufnehmen
setLayout(gbl);
add(panel2);
add(panel1);
// Die Ereignisbehandlung für die Schaltflächen
class CMeinActionLauscher implements ActionListener {
public void actionPerformed(ActionEvent e) {
String label;
label = e.getActionCommand();
aktFunktion = 1;
}
}
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
// Diese Klasse dient zum Anzeigen und Manipulieren des Bildes
class CBildLeinwand extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g);
// Falls ein Bild geladen ist, das Bild anzeigen
if(m_aktBild != null)
g.drawImage(m_aktBild,m_Xpos,m_Ypos,this);
}
public Dimension getMinimumSize() {
return m_fenster.getSize();
}
public Dimension getPreferredSize() {
return getMinimumSize();
}
}
}
Zuletzt bearbeitet: