下面代码中的Dimension也没用到,Dimension到底什么作用?为什么和getPreferredSize()连用?
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class RadioButtonDemo extends JFrame implements ItemListener
{
private JRadioButton jrbRed, jrbYellow, jrbGreen;
private ButtonGroup btg = new ButtonGroup();
private Light light;
public static void main(String[] args)
{
RadioButtonDemo frame = new RadioButtonDemo();
frame.setSize(250, 170);
frame.setVisible(true);
}
public RadioButtonDemo()
{
setTitle("RadioButton Demo");
JPanel p1 = new JPanel();
p1.setSize(200, 200);
p1.setLayout(new FlowLayout(FlowLayout.CENTER));
light = new Light();
light.setSize(40, 90);
p1.add(light);
JPanel p2 = new JPanel();
p2.setLayout(new FlowLayout());
p2.add(jrbRed = new JRadioButton("Red", false));
p2.add(jrbYellow = new JRadioButton("Yellow", false));
p2.add(jrbGreen = new JRadioButton("Green", false));
btg.add(jrbRed);
btg.add(jrbYellow);
btg.add(jrbGreen);
getContentPane().setLayout(new BorderLayout());
getContentPane().add(p1, BorderLayout.CENTER);
getContentPane().add(p2, BorderLayout.SOUTH);
jrbRed.addItemListener(this);
}
public void itemStateChanged(ItemEvent e)
{
if (jrbRed.isSelected())
light.turnOnRed();
}
}
class Light extends JPanel
{
private boolean red;
private boolean yellow;
private boolean green;
public Light()
{
red = false;
yellow = false;
green = false;
}
public void turnOnRed()
{
red = true;
yellow = false;
green = false;
repaint();
}
// green = false;
public void paintComponent(Graphics g)
{
super.paintComponent(g);
if (red)
{
g.setColor(Color.red);
g.fillOval(10, 10, 20, 20);
g.setColor(Color.black);
g.drawOval(10, 35, 20, 20);
g.drawOval(10, 60, 20, 20);
g.drawRect(5, 5, 30, 80);
}
}
public Dimension getPreferredSize()
{
return new Dimension(40, 90);
}
}
Dimension 类封装单个对象中组件的宽度和高度(精确到整数)。该类与组件的某个属性关联。由 Component 类和 LayoutManager 接口定义的一些方法将返回 Dimension 对象。 Dimension(int width, int height) 构造一个 Dimension,并将其初始化为指定宽度和高度。
评论
|
3
2
lovezsn1212 | 五级 采纳率41%