2026-04-14 2026-04-14 一些小玩意 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576import javax.swing.*;import java.awt.*;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;public class temp extends JFrame { private DrawingPanel drawingPanel;//绘图面板 private int shapeType;//绘制形状 private int x=150,y=150;//绘制图形的位置(即坐标) private final int SIZE= 100;(图形大小) public temp(){ JFrame frame = new JFrame();//框架 frame.setLayout(new BorderLayout());//布局类型 JPanel panel1 = new JPanel(); JRadioButton circle = new JRadioButton("圆",true); JRadioButton square = new JRadioButton("矩形"); ButtonGroup bGroup = new ButtonGroup();//这俩按钮构成一个互斥组 bGroup.add(circle); bGroup.add(square); panel1.add(circle); panel1.add(square); ItemListener Listener = new ItemListener() {//监听 @Override public void itemStateChanged(ItemEvent e) { if (e.getSource() == circle) shapeType=0;//当前选中"圆"文本的按钮 else if (e.getSource() == square) shapeType=1;//当前选中"矩形"文本的按钮 drawingPanel.repaint();//按任何按钮都要更新 } }; circle.addItemListener(Listener); square.addItemListener(Listener); drawingPanel = new DrawingPanel(); frame.add(panel1,BorderLayout.NORTH); frame.add(drawingPanel,BorderLayout.CENTER); JPanel panel2 = new JPanel(); JButton up=new JButton("上移"); JButton down=new JButton("下移"); JButton left=new JButton("左移"); JButton right=new JButton("右移"); up.addActionListener(e -> { y-=10; drawingPanel.repaint(); }); down.addActionListener(e -> { y+=10; drawingPanel.repaint(); });//这里是y轴正方向是向下所以up是-,down是+ left.addActionListener(e -> { x-=10; drawingPanel.repaint(); }); right.addActionListener(e -> { x+=10; drawingPanel.repaint(); }); panel2.add(up); panel2.add(down); panel2.add(left); panel2.add(right); frame.add(panel2,BorderLayout.SOUTH); frame.setDefaultCloseOperation(EXIT_ON_CLOSE); frame.setSize(300,300); frame.setVisible(true); } class DrawingPanel extends JPanel { @Override//重写方法来绘图 protected void paintComponent(Graphics g) { super.paintComponent(g);//清屏用 if (shapeType==0) g.drawOval(x, y, SIZE, SIZE);//画圆 else g.drawRect(x, y, SIZE, SIZE);//画矩形 } } public static void main(String[] args) { new temp(); }} 前一篇 2026 年中国传媒大学程序设计大赛 后一篇 贡献法贪心
说些什么吧!