001 package com.croftsoft.core.gui; 002 003 import java.awt.*; 004 005 import com.croftsoft.core.lang.NullArgumentException; 006 007 /********************************************************************* 008 * A Panel of Buttons evenly distributed in a single horizontal row. 009 * 010 * <p> 011 * Uses GridBagLayout instead of GridLayout to ensure even distribution 012 * during layout of the Buttons when the Panel is odd-sized. 013 * </p> 014 * 015 * <p> 016 * Example: 017 * <code> 018 * <pre> 019 * buttonPanel = new ButtonPanel1 ( 020 * new Button [ ] { 021 * playButton = new Button ( "Play" ), 022 * stopButton = new Button ( "Stop" ), 023 * pauseButton = new Button ( "Pause" ) } ); 024 * </pre> 025 * </code> 026 * </p> 027 * 028 * <p> 029 * Java 1.1 compatible. 030 * </p> 031 * 032 * @version 033 * 2001-08-08 034 * @since 035 * 2001-04-16 036 * @author 037 * <a href="https://www.croftsoft.com/">David W. Croft</a> 038 *********************************************************************/ 039 040 public final class ButtonPanel1 041 extends Panel 042 ////////////////////////////////////////////////////////////////////// 043 ////////////////////////////////////////////////////////////////////// 044 { 045 046 /********************************************************************* 047 * @param panelBackgroundColor 048 * 049 * If null, the default will be used. 050 * 051 * @throws NullArgumentException 052 * 053 * If buttons is null or buttons[i] is null. 054 *********************************************************************/ 055 public ButtonPanel1 ( 056 Button [ ] buttons, 057 Color panelBackgroundColor ) 058 ////////////////////////////////////////////////////////////////////// 059 { 060 super ( new GridBagLayout ( ) ); 061 062 NullArgumentException.check ( buttons ); 063 064 GridBagConstraints gridBagConstraints = new GridBagConstraints ( ); 065 066 gridBagConstraints.weightx = 1.0; 067 068 gridBagConstraints.fill = GridBagConstraints.HORIZONTAL; 069 070 for ( int i = 0; i < buttons.length; i++ ) 071 { 072 Button button = buttons [ i ]; 073 074 NullArgumentException.check ( 075 button, "buttons[" + i + "] is null" ); 076 077 gridBagConstraints.gridx = i; 078 079 add ( button, gridBagConstraints ); 080 } 081 082 if ( panelBackgroundColor != null ) 083 { 084 setBackground ( panelBackgroundColor ); 085 } 086 } 087 088 /********************************************************************* 089 * this ( buttons, null ); 090 *********************************************************************/ 091 public ButtonPanel1 ( Button [ ] buttons ) 092 ////////////////////////////////////////////////////////////////////// 093 { 094 this ( buttons, null ); 095 } 096 097 ////////////////////////////////////////////////////////////////////// 098 ////////////////////////////////////////////////////////////////////// 099 }