题目描述:
在窗口的北面添加一个下拉列表,该下拉列表有“红灯”,“绿灯”,“黄灯”三个选项。在窗口的中心添加一个画布,当用户在下拉列表选择某项后,画布上绘制相应的信号灯。
参考结果:
代码:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.Graphics;
public class Test extends JFrame {
public JComboBox box;
int flag = 0;
jpNewPanel jpNewPanel;
public static void main(String[] args) {
Test frame = new Test();
frame.setSize(500, 500);//图形界面大小
frame.setLocationRelativeTo(null);//图形界面出现在屏幕中央
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭
frame.setTitle("信号灯");//标题
frame.setVisible(true);
}
public Test() {
box = new JComboBox();
box.addItem("请选择");
box.addItem("红灯");
box.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
flag = box.getSelectedIndex();//判断点击的下拉框的第几个标签
jpNewPanel.repaint();
}
});
box.addItem("黄灯");
box.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
flag = box.getSelectedIndex();//判断点击的下拉框的第几个标签
jpNewPanel.repaint();
}
});
box.addItem("绿灯");
box.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
flag = box.getSelectedIndex();//判断点击的下拉框的第几个标签
jpNewPanel.repaint();
}
});
add(box, BorderLayout.NORTH);
jpNewPanel = new jpNewPanel();
add(jpNewPanel, BorderLayout.CENTER);
}
class jpNewPanel extends JPanel {
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawOval(150, 100, 120, 120);//绘制圆形
if (flag == 1) {
g.setColor(Color.RED);
g.fillOval(150, 100, 120, 120);//填充颜色
} else if (flag == 2) {
g.setColor(Color.YELLOW);
g.fillOval(150, 100, 120, 120);
} else if (flag == 3) {
g.setColor(Color.GREEN);
g.fillOval(150, 100, 120, 120);
}
}
}
}
运行结果: