//cd c:\HPBasic\Toppage-sample3\MySwing\Try //javac ColorTest.java //set CLASSPATH=. //appletviewer ColorTest.java import java.applet.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; /* */ public class ColorTest extends JApplet implements ActionListener { JPanel panel; public void init(){ Container contentPane = getContentPane(); panel = new JPanel(); contentPane.add(panel); contentPane.setLayout(new FlowLayout()); JButton yellow = new JButton("Yellow"); JButton blue = new JButton("Blue"); JButton red = new JButton("Red"); contentPane.add(yellow); contentPane.add(blue); contentPane.add(red); yellow.addActionListener(this); blue.addActionListener(this); red.addActionListener(this); } public void actionPerformed(ActionEvent event) { Color c; String source = event.getActionCommand(); if (source == "Yellow") { c=Color.yellow; } else if (source == "Blue") { c=Color.blue; } else { c=Color.red; } panel.setBackground(c); } } /* 1 panel.setBackground(c);は、panelの大きさが意図とは異なるが、一応OK。 2 contentPane.setLayout(new FlowLayout());はボタンの大きさはいいぐあい。 単に、setBackground(c)だと、JPanelもJLabel同様、色が変わらない。 3 BorderLayout.WESTとすると、ボタンが異常に大きくなる。 contentPane.add(yellow,BorderLayout.WEST); contentPane.add(blue,BorderLayout.CENTER); contentPane.add(red,BorderLayout.EAST); 4 contentPane.setLayout(new GridLayout());も同じ。 5 下記は、GridBagのAPI Button1, Button2, Button3: weightx = 1.0 Button4: weightx = 1.0, gridwidth = GridBagConstraints.REMAINDER Button5: gridwidth = GridBagConstraints.REMAINDER Button6: gridwidth = GridBagConstraints.RELATIVE Button7: gridwidth = GridBagConstraints.REMAINDER Button8: gridheight = 2, weighty = 1.0 Button9, Button 10: gridwidth = GridBagConstraints.REMAINDER Here is the code that implements the example shown above: -------------------------------------------------------------------------------- import java.awt.*; import java.util.*; import java.applet.Applet; public class GridBagEx1 extends Applet { protected void makebutton(String name, GridBagLayout gridbag, GridBagConstraints c) { Button button = new Button(name); gridbag.setConstraints(button, c); add(button); } public void init() { GridBagLayout gridbag = new GridBagLayout(); GridBagConstraints c = new GridBagConstraints(); setFont(new Font("Helvetica", Font.PLAIN, 14)); setLayout(gridbag); c.fill = GridBagConstraints.BOTH; c.weightx = 1.0; makebutton("Button1", gridbag, c); makebutton("Button2", gridbag, c); makebutton("Button3", gridbag, c); c.gridwidth = GridBagConstraints.REMAINDER; //end row makebutton("Button4", gridbag, c); c.weightx = 0.0; //reset to the default makebutton("Button5", gridbag, c); //another row c.gridwidth = GridBagConstraints.RELATIVE; //next-to-last in row makebutton("Button6", gridbag, c); c.gridwidth = GridBagConstraints.REMAINDER; //end row makebutton("Button7", gridbag, c); c.gridwidth = 1; //reset to the default c.gridheight = 2; c.weighty = 1.0; makebutton("Button8", gridbag, c); c.weighty = 0.0; //reset to the default c.gridwidth = GridBagConstraints.REMAINDER; //end row c.gridheight = 1; //reset to the default makebutton("Button9", gridbag, c); makebutton("Button10", gridbag, c); setSize(300, 100); } */