完整的程序如下:
import java.awt.*
import java.awt.event.*
import javax.swing.*
import java.awt.Graphics
public class TrafficLight extends JFrame{
JRadioButton jrbYellow,jrbGreen,jrbRed
int flag=0
jpNewPanel jpNewPanel
public static void main(String[] args){
TrafficLight frame=new TrafficLight()
frame.setSize(500,200)
frame.setLocationRelativeTo(null)
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
frame.setTitle("TrafficLight")
frame.setVisible(true)
}
public TrafficLight(){
jpNewPanel=new jpNewPanel()
add(jpNewPanel,BorderLayout.CENTER)
JPanel jpRadioButtons=new JPanel()
jpRadioButtons.setLayout(new GridLayout(1,3))
jpRadioButtons.add(jrbYellow=new JRadioButton("Yellow"))
jpRadioButtons.add(jrbGreen=new JRadioButton("Green"))
jpRadioButtons.add(jrbRed=new JRadioButton("Red"))
add(jpRadioButtons,BorderLayout.SOUTH)
ButtonGroup group=new ButtonGroup()
group.add(jrbYellow)
group.add(jrbGreen)
group.add(jrbRed)
jrbYellow.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
flag=2
jpNewPanel.repaint()
}
})
jrbGreen.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
flag=1
jpNewPanel.repaint()
}
})
jrbRed.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
flag=3
jpNewPanel.repaint()
}
})
}
class jpNewPanel extends JPanel{
protected void paintComponent(Graphics g){
super.paintComponent(g)
g.drawRect(0,0,40,100)
g.drawOval(10,10,20,20)
g.drawOval(10,40,20,20)
g.drawOval(10,70,20,20)
if(flag==1){
g.setColor(Color.GREEN)
g.fillOval(10, 70, 20, 20)
}
else if(flag==2){
g.setColor(Color.YELLOW)
g.fillOval(10, 40, 20, 20)
}
else if(flag==3){
g.setColor(Color.RED)
g.fillOval(10, 10, 20, 20)
}
}
}
}
import java.awt.Colorimport java.awt.Container
import java.awt.Dimension
import java.awt.FlowLayout
import java.awt.Graphics
import java.awt.event.ActionEvent
import java.awt.event.ActionListener
import javax.swing.JButton
import javax.swing.JFrame
import javax.swing.JPanel
public class Way extends JPanel {
JButton red
public Way() {
red= new JButton("换灯")
setBackground(Color.yellow)
setSize(new Dimension(320, 260))
setPreferredSize(new Dimension(320, 260) )
JPanel btnPanel = new JPanel()
btnPanel.setLayout(new FlowLayout())
red.setLayout(new FlowLayout())// 将单选按钮加入按钮面板
btnPanel.add(red)
add(red)
}
private void lightRed(Graphics g) {
g.setColor(Color.red)
g.fillOval(getWidth() / 2, 30, 15, 15)
g.setColor(Color.black)
g.fillOval(getWidth() / 2, 50, 15, 15)
g.fillOval(getWidth() / 2, 70, 15, 15)
}
private void lightYellow(Graphics g) {
g.setColor(Color.yellow)
g.fillOval(getWidth() / 2, 50, 15, 15)
g.setColor(Color.black)
g.fillOval(getWidth() / 2, 30, 15, 15)
g.fillOval(getWidth() / 2, 70, 15, 碧雹差15)
}
private void lightGreen(Graphics g) {
g.setColor(Color.green)
g.fillOval(getWidth() / 2, 70, 15, 15)
g.setColor(Color.black)
g.fillOval(getWidth() / 2, 30, 15, 15)
g.fillOval(getWidth() / 2, 50, 15, 15)
}
protected void paintComponent(Graphics g) {
super.paintComponents(g)
Way a = new Way()
g.clearRect(0, 0, getWidth(), getHeight())
g.drawRect(getWidth() / 2, 30, 30, 80)
red.addActionListener(new ActionListener() {
int f1 = 0
public void actionPerformed(ActionEvent e) {
Graphics g = getGraphics()
switch (f1) {
case 0:
a.lightRed(g)
break
case 1:
a.lightYellow(g)
break
case 2:
a.lightGreen(g)
break
}
f1++
if(f1>2) f1=0
}
})
}
public static void main(String[] args) {
JFrame fr = new JFrame("邮件界面模拟")
fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) // 点击x结束程序
Container contentPane = fr.getContentPane()
// 得到窗口内容面板
contentPane.add(new Way())
fr.pack()
fr.setVisible(true) // 设置窗口可见
}
}大致帮你改了下,不知道符合不符悔皮合你的要求,肆则有问题请追问
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)