S
scooterJava
Gast
Ich habe mir eine kleine Klasse geschrieben, die eine JToolBar als Statusleiste verwendet (Auszug):
Im Hauptprogramm rufe ich dann wie folgt auf (Auszug):
Wenn ich jetzt mit
testweise die Vordergrundfarbe ändere, geht dies einwandfrei beim Label. Nicht so allerdings beim Ändern der Hintergrundfarbe:
Eine Prüfung ergab, dass das Label tatsächlich die neue Hintergrundfarbe erhält, diese aber nicht sichtbar ist und offenbar vom JPanel verdeckt wird. Ich habe keine Möglichkeit gefunden, das zu ändern. Weiß jemand Rat?
Java:
public class StatusBar
extends JPanel {
private final ArrayList <JComponent> fields = new ArrayList <JComponent>();
public StatusBar( JComponent... components ) {
super( new BorderLayout() );
JToolBar statusbar = new JToolBar();
statusbar.setFloatable( false );
if( components.length == 0 ) {
JComponent component = new JLabel( " " );
this.fields.add( component );
statusbar.add( component );
}
else {
for( JComponent component : components ) {
this.fields.add( component );
statusbar.add( component );
}
}
add( statusbar, BorderLayout.PAGE_END );
}
public JComponent getComponentAtIndex( int index ) {
if( iIndex >= 0 & iIndex < this.fields.size() ) {
return this.fields.get( iIndex );
}
return null;
}
}
Im Hauptprogramm rufe ich dann wie folgt auf (Auszug):
Java:
public class Test {
public static void main( String[] args ) {
JFrame frame = new JFrame();
frame.setLayout( new BorderLayout() );
frame.setSize( 200, 200 );
JButton but1 = new JButton( "button1" );
JLabel lab1 = new JLabel( "label1" );
JButton but2 = new JButton( "button2" );
StatusBar sb = new StatusBar( but1, lab1, but2 );
frame.add( sb, BorderLayout.SOUTH );
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.setVisible( true );
}
}
Wenn ich jetzt mit
Java:
sb.getComponentAtIndex( 1 ).setForeground( Color.RED );
Java:
sb.getComponentAtIndex( 1 ).setBackground( Color.RED );
Eine Prüfung ergab, dass das Label tatsächlich die neue Hintergrundfarbe erhält, diese aber nicht sichtbar ist und offenbar vom JPanel verdeckt wird. Ich habe keine Möglichkeit gefunden, das zu ändern. Weiß jemand Rat?