public class StammbaumFenster extends JFrame{
JButton Personen[] = new JButton[33];
JButton KinderEnk[][] = new JButton[21][23];//0=Kind Rest Enkel
JLabel Pfeile[] = new JLabel[88];
JScrollPane scrollpane;
private static final long serialVersionUID = 1L;
void addComponent( Container cont, GridBagLayout gbl,Component c,int x, int y,int width, int height,double weightx, double weighty,int typ , int schriftgroese){
GridBagConstraints gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.BOTH;
gbc.gridx = x; gbc.gridy = y;
gbc.gridwidth = width; gbc.gridheight = height;
gbc.weightx = weightx; gbc.weighty = weighty;
int Breite=30, Hoehe=40;
int Breite2=27, Hoehe2=40;
if (typ==1) {
((JButton) c).setMargin(new Insets(0, 0, 0, 0));
((JButton) c).setFont(new Font("Arial", Font.PLAIN,schriftgroese));
}
//2-24 sind Bilder
gbl.setConstraints(c, gbc );
cont.add( c );
}
class MyAdjustmentListener implements AdjustmentListener {
public void adjustmentValueChanged(AdjustmentEvent evt) {
//NeueCronik_stammbaum.setSize(new Dimension(1000,900));
//NeueCronik_stammbaum.validate();
NeueCronik_stammbaum.repaint();
//NeueCronik_stammbaum.validate();
scrollpane.revalidate();
scrollpane.updateUI();
scrollpane.repaint();
//NeueCronik_stammbaum.repaint();
}
}
StammbaumFenster(String titel){
super(titel);
GridBagLayout gbl = new GridBagLayout();
Panel panel1 = new Panel();
panel1.setLayout(gbl);
int i=0;
//Hier Namen eintragen
for ( i=0;i<32;i++){ Personen[i]=new JButton("<html>Max<br> Muster</html>");}
for ( i=0;i<21;i++){
for (int j=0;j<21;j++){
if (j<5 && i<21) KinderEnk[i][j]=new JButton("<html>Mäxchen<br> Muster</html>");
else KinderEnk[i][j]=new JButton("");
}
}
for ( i=0;i<88;i++){ Pfeile[i]=new JLabel("");}
//zeichen######################
for ( i=1;i<35;i++){ addComponent( panel1, gbl, new JLabel("<--->"), i , 0, 1, 1, 0 , 0 ,0,8);}
//Alteltern x y w h wx wy typ Schriftgröße
for (i=0 ;i<8 ;i++){ // x y w h wx wy typ Schriftgröße
addComponent( panel1, gbl, Personen[i*2] , 4*i+2 , 1, 3, 1, 0 , 0 ,1 ,9 );
addComponent( panel1, gbl, Personen[i*2+1] , 4*i+2 , 2, 3, 1, 0 , 0 ,1 ,9 );
addComponent( panel1, gbl, Pfeile[i*2] , 4*i+1 , 1, 3, 1, 0 , 0 ,21 ,9 );
addComponent( panel1, gbl, Pfeile[i*2+1] , 4*i+1 , 2, 3, 1, 0 , 0 ,20 ,9 );
addComponent( panel1, gbl, Pfeile[i+16 ] , 4*i+1 , 3, 3, 1, 0 , 0 ,3 ,9 );
}
//Urgroßeltern x y w h wx wy typ Schriftgröße
for (i=0 ;i<8 ;i++){ addComponent( panel1, gbl, Personen[i+16] , i*4+1 , 4, 3, 1, 0 , 0 ,1 ,10);}
for (i=0 ;i<4 ;i++){ addComponent( panel1, gbl, Pfeile[i+24] , i*8+4 , 4, 1, 1, 0 , 0 ,2 ,10);}
//Pfeil Reihe x y w h wx wy typ Schriftgröße
for (i=0 ;i<4 ;i++){ addComponent( panel1, gbl, Pfeile[i+28] , i*8+4 , 5, 1, 1, 0 , 0 ,3 ,10);}
//Großeltern x y w h wx wy typ Schriftgröße
for (i=0 ;i<4 ;i++){ addComponent( panel1, gbl, Personen[i+24] , i*8+2 , 6, 5, 1, 0 , 0 ,1 ,12);}
// x y w h wx wy typ Schriftgröße
addComponent( panel1, gbl, Pfeile[32] , 7 , 6, 1, 1, 0 , 0 ,5 ,11);
addComponent( panel1, gbl, Pfeile[35] , 23, 6, 1, 1, 0 , 0 ,5 ,11);
addComponent( panel1, gbl, Pfeile[33] , 8 , 6, 1, 1, 0 , 0 ,4 ,11);
addComponent( panel1, gbl, Pfeile[36] , 24, 6, 1, 1, 0 , 0 ,4 ,11);
addComponent( panel1, gbl, Pfeile[37] , 25, 6, 1, 1, 0 , 0 ,6 ,11);
addComponent( panel1, gbl, Pfeile[34] , 9 , 6, 1, 1, 0 , 0 ,6 ,11);
//Pfeil Reihe x y w h wx wy typ Schriftgröße
for (i=0;i<2 ;i++){ addComponent( panel1, gbl, Pfeile[i+38] , i*16+8 , 7, 1, 1, 0 , 0 ,3 ,12);}
//eltern x y w h wx wy typ Schriftgröße
for (i=0;i<2 ;i++){ addComponent( panel1, gbl, Personen[i+28] , i*16+5 , 8, 7, 1, 0 , 0 ,1 ,14);}
// x y w h wx wy typ Schriftgröße
addComponent( panel1, gbl, Pfeile[40] , 12, 8, 4, 1, 0 , 0 ,7 ,14);
addComponent( panel1, gbl, Pfeile[41] , 16, 8, 1, 1, 0 , 0 ,4 ,14);
addComponent( panel1, gbl, Pfeile[42] , 17, 8, 4, 1, 0 , 0 ,8 ,14);
//Pfeil Reihe x y w h wx wy typ Schriftgröße
addComponent( panel1, gbl, Pfeile[43] , 16, 9, 1, 1, 0 , 0 ,3 ,14);
//Akt_person x y w h wx wy typ Schriftgröße
addComponent( panel1, gbl, Personen[30], 12, 10, 9, 1, 0 , 0 ,1 ,16);
addComponent( panel1, gbl, Personen[31], 13, 11, 9, 1, 0 , 0 ,1 ,14);
if (KinderEnk[0][0].getText()==""){
addComponent( panel1, gbl, Pfeile[44], 12, 11, 1, 1, 0 , 0 ,16 ,16);
}
else{
addComponent( panel1, gbl, Pfeile[44], 12, 11, 1, 1, 0 , 0 ,9 ,16);
addComponent( panel1, gbl, Pfeile[45], 2 , 11,10, 1, 0 , 0 ,24 ,16);
addComponent( panel1, gbl, Pfeile[46], 1 , 11, 1, 1, 0 , 0 ,11 ,16);
addComponent( panel1, gbl, Pfeile[47], 1 , 12, 1, 1, 0 , 0 ,3 ,16);
}
//Kinder
int j=1;
int pnr=48;
for (int t=0;t<5;t++){
i=0;
while (KinderEnk[i+t*4][0].getText()!="" && i<4){
KinderEnk[i+t*4][0].setText("Kind");KinderEnk[i+t*4][1].setText("Frau");
addComponent( panel1, gbl, KinderEnk[i+t*4][0], i*8+2 , 14+t*14, 5, 1, 0 , 0 ,1 ,11);
addComponent( panel1, gbl, KinderEnk[i+t*4][1], i*8+3 , 15+t*14, 5, 1, 0 , 0 ,1 ,11);
//enkel
j=1;
while (j<10){
if (!(KinderEnk[i+t*4][j*2].getText()).equals("")) addComponent( panel1, gbl, KinderEnk[i+t*4][j*2] , i*8+3 , 17+j+t*14, 3, 1, 0 , 0 ,1 ,7);
if (!(KinderEnk[i+t*4][j*2+1].getText()).equals("")) addComponent( panel1, gbl, KinderEnk[i+t*4][j*2+1], i*8+6 , 17+j+t*14, 3, 1, 0 , 0 ,1 ,7);
j++;
}
i++;
}
if (KinderEnk[(t+1)*4][0].getText().equals("")){addComponent( panel1, gbl, Pfeile[pnr], 1 , 13+t*14, 1, 1, 0 , 0 ,16 ,16); pnr++;}
else{addComponent( panel1, gbl, Pfeile[pnr], 1 , 13+t*14, 1, 1, 0 , 0 ,13 ,16); pnr++;}
}
scrollpane = new JScrollPane(panel1);
scrollpane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
scrollpane.getVerticalScrollBar().addAdjustmentListener(new MyAdjustmentListener());
add(scrollpane);
}
}