Ich möchte eine einfache sache machen - einfach 15 Bilder in einem GridLayout mit 3 zeilen und 5 spalten anzeigen. -Aber es funktioniert nicht ganz - vielleicht kann jemand mir sagen was da falsch läuft:
Am Anfang erstelle ich die Bilder einzeln - je Bild auf ein JPanel geklatscht:
Auf jeden fall es funktioniert. Dann erstelle ich eine Liste mit allen Bildern ( insgesamt 10 verschiedene )
Dies funktioniert auch - auf die methode von Bild setNumber( ) werde ich noch zu sprechen kommen - jedes Bild bekommt einfach nur ein nummber ( von 0 bis 9 ).
Wann ich jetzt diese klasse ausgebe, einfach die Bilder nacheinander von 0 bis 9 zu JFrame hinzufüge, dann funktioniert es einwandfrei.
Jedoch nach noch ein paar Klassen, wo nur die einzelne Bilder ausgewählt und in bestimmten Reihenfolgen geordnet, funktioniert die Ausgabe nicht mehr.
Hier die stelle ab der es nicht mehr funktioniert:
So bekomme ich genau so wie gewollt die 15 nummern ( mit setNumber( ) am Anfang zugewiesen ), in genau richtiger Reihenfolge und an genau richtigen stellen.
Wenn ich jetzt die zeile auskommentiere
und dafür
einfüge, dann sehe ich nur die ersten 8 Bilder und das wars. ( ob, mit -1 oder ohne in add( bild.get( spalte ), -1 ); )
Die Ausgabe selbst ist einfach ein JFrame, zu dem die ShowBilder Jpanel hinzugefügt wird
Ich verstehe gar nicht wie es möglich ist - es kann einfach nicht ein Nummer ohne dazugehörigen Bild existieren - diese werden ja zusammen gesetzt. Dazu kann ich die Bilder alle ausgeben - also werdne diese richtig erstellt und nummeriert. Wenn es an irgendeiner stelle früher was schief laufen würde, wäre die nummerierung auch falsch - aber diese ist richtig, an den richtigen stellen, in richtiger größe - alles passt.
Wie kann es jetzt sein das die Nummerierung der Bilder angezeigt wird, aber die Bilder nur zu hälfte?
Am Anfang erstelle ich die Bilder einzeln - je Bild auf ein JPanel geklatscht:
Java:
public class Bild extends JPanel
{
//bla bla
public void paint(Graphics g)
{
g.drawImage( bild, 0, 0, DIM.width, DIM.height, this );
}
}
Auf jeden fall es funktioniert. Dann erstelle ich eine Liste mit allen Bildern ( insgesamt 10 verschiedene )
Java:
public class Walze
{
private ArrayList < Bild > walze = null;
public Walze ( )
{
walze = new ArrayList < Bild >( );
for ( byte i = 0; i < ANZAHL; ++i )
{
walze.add( new Bild( ADDRESSES[i] ) );
walze.get( i ).setNumber( i );
}
}
public Bild getBild ( byte num )
{
return walze.get( num );
}
// bla bla
}
Dies funktioniert auch - auf die methode von Bild setNumber( ) werde ich noch zu sprechen kommen - jedes Bild bekommt einfach nur ein nummber ( von 0 bis 9 ).
Wann ich jetzt diese klasse ausgebe, einfach die Bilder nacheinander von 0 bis 9 zu JFrame hinzufüge, dann funktioniert es einwandfrei.
Jedoch nach noch ein paar Klassen, wo nur die einzelne Bilder ausgewählt und in bestimmten Reihenfolgen geordnet, funktioniert die Ausgabe nicht mehr.
Hier die stelle ab der es nicht mehr funktioniert:
Java:
public class ShowBilder extends javax.swing.JPanel
{
private Automat auto;
public ShowBilder ( ) // DIM ist eine Dimension, rest einfach byte Konstante
{
auto = new Automat( );
this.setPreferredSize( new Dimension ( ( DIM.width * REIHEN ), ( DIM.height * 3 ) ) );
this.setLayout( new GridLayout ( 0, REIHEN ) ); // REIHEN == 5
this.setVisible( true );
shaubild( );
}
private void shaubild ( )
{
this.removeAll( );
ArrayList<Bild> bild = auto.getBilder( ); // gibt die 15 Bilder zurück
for ( byte spalte = 0; spalte < bild.size( ); ++spalte )
{
this.add( new JLabel( String.valueOf( bild.get( spalte ).getNumber( ))));
//this.add( bild.get( spalte ), -1 );
}
}
}
Wenn ich jetzt die zeile auskommentiere
Java:
this.add( new JLabel( String.valueOf( bild.get( spalte ).getNumber( ))));
Java:
this.add( bild.get( spalte ), -1 );
Die Ausgabe selbst ist einfach ein JFrame, zu dem die ShowBilder Jpanel hinzugefügt wird
Java:
public static void main( String[ ] args )
{
JFrame f = new JFrame( );
ShowBilder shows = new ShowBilder( );
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.getContentPane( ).add( shows );
f.setAlwaysOnTop( true );
f.pack( );
f.setBounds( 50, 300, shows.getWidth( ), shows.getHeight( ) );
f.setVisible( true );
}
Ich verstehe gar nicht wie es möglich ist - es kann einfach nicht ein Nummer ohne dazugehörigen Bild existieren - diese werden ja zusammen gesetzt. Dazu kann ich die Bilder alle ausgeben - also werdne diese richtig erstellt und nummeriert. Wenn es an irgendeiner stelle früher was schief laufen würde, wäre die nummerierung auch falsch - aber diese ist richtig, an den richtigen stellen, in richtiger größe - alles passt.
Wie kann es jetzt sein das die Nummerierung der Bilder angezeigt wird, aber die Bilder nur zu hälfte?
Zuletzt bearbeitet: