java风扇_用java实现一个风扇的转动,具体代码如下,可是运行却不转动,请高手帮帮忙...

本文档展示了一个使用Java Swing创建的风扇转动程序,但在实际运行中无法正常工作。主要代码涉及创建一个自定义组件`zhuandong`,继承自`JPanel`,并利用`Timer`来实现定时重绘以模拟风扇转动。然而,代码存在一个问题,即风扇图形仅绘制了四个静态扇形,而没有实现旋转效果。需要进一步调整`paintComponent`方法以更新扇形的角度,以达到转动效果。
摘要由CSDN通过智能技术生成

importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;publicclassfengshanextendsJFrame{publicfengshan(){add(newzhuandong());}publicstaticvoidmain(String[]args){feng...

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class fengshan extends JFrame{

public fengshan(){

add(new zhuandong());

}

public static void main(String[] args){

fengshan f=new fengshan();

f.setSize(400, 400);

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

f.setLocationRelativeTo(null);

f.setVisible(true);

}

class zhuandong extends JPanel{

public zhuandong(){

Timer timer=new Timer(1000,new TimerListener());

timer.start();

}

protected void paintComponent(Graphics g){

super.paintComponent(g);

int xcenter=getWidth()/2;

int ycenter=getHeight()/2;

int radius=20;

int x=xcenter-radius;

int y=ycenter-radius;

g.fillArc(x, y, 2*radius,2*radius,0, 30);

g.fillArc(x, y, 2*radius,2*radius,90, 30);

g.fillArc(x, y, 2*radius,2*radius,180, 30);

g.fillArc(x, y, 2*radius,2*radius,270, 30);

}

class TimerListener implements ActionListener{

public void actionPerformed(ActionEvent e){

repaint();

}

}

}

}

展开

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个简单的JavaFX代码,可以模拟风扇转动效果: ```java import javafx.animation.Animation; import javafx.animation.RotateTransition; import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.layout.Pane; import javafx.scene.paint.Color; import javafx.scene.shape.Arc; import javafx.scene.shape.Circle; import javafx.stage.Stage; import javafx.util.Duration; public class FanSimulation extends Application { @Override public void start(Stage primaryStage) { // 创建一个圆形 Circle circle = new Circle(150, 150, 100); circle.setFill(Color.TRANSPARENT); circle.setStroke(Color.BLACK); // 创建三个扇形 Arc arc1 = new Arc(150, 150, 80, 80, 0, 30); arc1.setType(ArcType.ROUND); arc1.setFill(Color.RED); arc1.setStroke(Color.BLACK); Arc arc2 = new Arc(150, 150, 80, 80, 90, 30); arc2.setType(ArcType.ROUND); arc2.setFill(Color.BLUE); arc2.setStroke(Color.BLACK); Arc arc3 = new Arc(150, 150, 80, 80, 180, 30); arc3.setType(ArcType.ROUND); arc3.setFill(Color.GREEN); arc3.setStroke(Color.BLACK); // 创建一个面板并添加圆形和扇形 Pane pane = new Pane(); pane.getChildren().addAll(circle, arc1, arc2, arc3); // 创建一个转动画 RotateTransition rotateTransition = new RotateTransition(Duration.seconds(2), pane); rotateTransition.setByAngle(360); rotateTransition.setCycleCount(Animation.INDEFINITE); rotateTransition.play(); // 创建一个场景并将面板添加到场景中 Scene scene = new Scene(pane, 300, 300); // 将场景添加到舞台并显示舞台 primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { launch(args); } } ``` 上述代码创建了一个圆形和三个扇形,然后将它们添加到面板中。接着创建一个转动画,并将面板添加到动画中,最后将面板添加到场景中并显示舞台。运行程序后,将会看到一个旋转的风扇
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值