導航:首頁 > 編程語言 > javafx正弦函數

javafx正弦函數

發布時間:2023-02-27 21:36:28

1. java如何讓多個圖片都按照一定軌跡下落

圖片的位移(下落),可以通過修改圖片的x,y坐標來實現, 在Swing/Html中,我們可以使用Timer定時(比如每隔100毫秒)去修改圖片的x,y坐標即可實現,

多個圖片都按照一定的軌跡移動,那都按照自己的軌跡的演算法,去定時修改x,y坐標即可.

JavaFX是java先進的圖形界面框架, 裡面有3D和各種動畫, 所以按照軌跡移動,都能輕松實現

importjavafx.animation.Animation;
importjavafx.animation.Interpolator;
importjavafx.animation.PathTransition;
importjavafx.animation.RotateTransition;
importjavafx.application.Application;
importjavafx.geometry.Insets;
importjavafx.scene.Group;
importjavafx.scene.Scene;
importjavafx.scene.control.Button;
importjavafx.scene.image.ImageView;
importjavafx.scene.layout.HBox;
importjavafx.scene.shape.MoveTo;
importjavafx.scene.shape.Path;
importjavafx.scene.shape.QuadCurveTo;
importjavafx.stage.Stage;
importjavafx.util.Duration;

{
publicstaticvoidmain(String[]args){
launch(args);
}

@Override
publicvoidstart(StageprimaryStage)throwsException{
ImageViewimv=newImageView(getClass().getResource("ball.png").toExternalForm());
Pathpath=newPath();//路徑;運動軌跡
MoveTomt=newMoveTo(20,50);
QuadCurveToquadTo2=newQuadCurveTo(175,190,350,30);
path.getElements().addAll(mt,quadTo2);

HBoxhbox=newHBox(10);

ButtonbtnStart=newButton("開始");
ButtonbtnPause=newButton("暫停");
ButtonbtnResume=newButton("繼續");
ButtonbtnStop=newButton("結束");
hbox.getChildren().addAll(btnStart,btnPause,btnResume,btnStop);
hbox.setPadding(newInsets(20));
hbox.setLayoutX(80);
hbox.setLayoutY(230);
Grouproot=newGroup();

root.getChildren().addAll(imv,path,hbox);//不添加path.就可以不顯示path了

Scenescene=newScene(root,430,300);

primaryStage.setTitle("JavaFX");
primaryStage.setScene(scene);
primaryStage.show();
//旋轉動畫設置
RotateTransitionrt=newRotateTransition(Duration.millis(1000),imv);
rt.setInterpolator(Interpolator.LINEAR);
rt.setFromAngle(0);
rt.setToAngle(360);
rt.setCycleCount(Animation.INDEFINITE);
rt.play();


//路徑動畫設置
PathTransitionpt=newPathTransition(Duration.millis(800),path,imv);//路徑動畫
pt.setCycleCount(Animation.INDEFINITE);
pt.setAutoReverse(true);
btnStart.setOnAction(e->{
pt.playFromStart();//從頭開始播放

});

//----按鈕的響應設置---
btnPause.setOnAction(e->{
pt.pause();
});
btnResume.setOnAction(e->{
pt.play();//播放
});
btnStop.setOnAction(e->{
pt.jumpTo(newDuration(0));//跳到第0秒處
pt.stop();
});
}
}

2. javafx mediaview 有聲音沒圖像

主要問題: 和你上一個問題 "javafx圖片顯示不出來" 其實是同一類型的錯誤.

因為你通過代碼FXMLLoader.load(...fxml)載入了界面,已經實例化了組件,

就不需要你手動去new XxxView出來了. 你可以在new MediaView之前,試試下面這行代碼

System.out.println(mv==null);//結果是false,代表mv已經實例化了

如果你去new了 , 那麼mv就是新的MediaView,. 而並不是程序界面上的MediaView.

所以沒有畫面. 但是有聲音, 並且聲音沒有通過滑鼠點擊,就自動出來了. 因為你把代碼寫到了初始化方法里initialize .

解決辦剪切 initialize 方法里的代碼. 然後粘貼到新的jj方法里

	@Override
publicvoidinitialize(URLlocation,ResourceBundleresources){//初始化,在這個程序里不需要寫代碼


}

publicvoidjj(){//onMouseClicked="#jj"mv點擊滑鼠後,綁定的方法是jj,所以在這里進行播放工作
Stringmv_URL=getClass().getResource("你的視頻.mp4").toString();
System.out.println(mv_URL);
Mediah=newMedia(mv_URL);
MediaPlayermp=newMediaPlayer(h);
//mv=newMediaView();//刪除此行代碼
mv.setMediaPlayer(mp);
mp.play();
}

效果圖

3. java編程JavaFX

JavaFX腳本是一種聲明式、靜態類型編程語言。它具有一等函數(first-class functions)、聲明式的語法、列表推導回(list-comprehensions)及基於依賴關系答的增量式求值(incremental dependency-based evaluation)等特徵。
JavaFX腳本為多種多樣的操作提供了聲明式、無中間程序邏輯的語法,這些操作包括創建2D動畫、設置屬性或者聲明在模式和視圖對象之間的綁定依賴關系。

4. 如何用javaFX畫正弦曲線

寫一個類繼承JFrame
private final int WIDTH = 900, HEIGHT = 450;//窗口默認的寬度、高度
private final int offsetX=15;//原點的距離窗口左邊空白
private final int offsetY=5; //原點的距離窗口頂邊空白
private final int stepX=200; //橫向步進
private final int stepY=200; //縱向步進
private final Color colBack = Color.white; //背景顏色
private final Color colText = Color.blue; //文字標簽顏色
private final Color colCros = Color.DARK_GRAY; //軸顏色
private final Color colLine = Color.red; //線顏色

private JRadioButton rdSin=new JRadioButton("Sin");
private JRadioButton rdCos=new JRadioButton("Cos");
private JButton btnDraws = new JButton("畫線");
private JButton btnClear = new JButton("清空");
private boolean bDraw = false;

public void paint(Graphics g){
super.paint(g); //讓父類先處理
int w=getWidth(); //窗口的寬度
int h=getHeight();//窗口的高度

g.setColor(colBack); //底色用白色
g.fillRect(0, 0, w, h); //填充整個窗口
rdSin.repaint();
rdCos.repaint();
btnDraws.repaint();
btnClear.repaint();
if(!bDraw){
return ;
}

int mid_y=(h-offsetY)/2+10;//半高
g.setFont(g.getFont().deriveFont(10f));//字體大小
g.setColor(colCros); //橫線和豎線,用深灰色
g.drawLine(0, offsetY+mid_y, w, mid_y+offsetY); //橫線中線
g.drawLine(offsetX, offsetY, offsetX, h); //豎線中線

g.setColor(colText); //刻度用藍色
int maxX=(int)Math.round( (w-offsetX) / stepX);//計算一下橫向最大刻度
for(int i=0;i<=maxX;i++){
g.drawLine(offsetX+stepX*i, offsetY+mid_y-5, offsetX+stepX*i, offsetY+mid_y+5);//橫線刻度,90步進,方便後面畫線的計算
g.drawString(String.valueOf(90*i), offsetX+stepX*i-5, offsetY+mid_y+10+5); //刻度是90度
}

int maxY=(int)Math.round( mid_y / stepY);//計算一下縱向最大刻度
for(int i=1;i<=maxY;i++){
g.drawLine(offsetX-5, offsetY+mid_y-stepY*i, offsetX+5, offsetY+mid_y-stepY*i);//豎線正刻度,100步進
g.drawString(String.valueOf(stepY*i), offsetX+10, offsetY+mid_y-stepY*i+5);

g.drawLine(offsetX-5, offsetY+mid_y+stepY*i, offsetX+5, offsetY+mid_y+stepY*i);//豎線負刻度,100步進
g.drawString(String.valueOf(-stepY*i), offsetX+10, offsetY+mid_y+stepY*i+5);
}

g.setColor(colLine); //曲線用紅色
int x1, y1, x_=-1,y_=0;
for(int i=0; i<=w; i++){ //從0度到窗口寬度,開始畫Sin()點
x1=((Double)(offsetX+i/90.0*stepX) ).intValue();
if(rdSin.isSelected()){
y1=offsetY+((Double)( mid_y+stepY*Math.sin( Math.toRadians(i) )) ).intValue();
}else{
y1=offsetY+((Double)( mid_y+stepY*Math.cos( Math.toRadians(i) )) ).intValue();
}
if(x_==-1){
x_=x1;y_=y1;
}
g.drawLine(x_, y_, x1, y1);
x_=x1;y_=y1;
}
}

public SinCos(){
super("測試Graphics+Sin/Cos");
this.setSize(WIDTH, HEIGHT);
this.setLayout(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

ButtonGroup group = new ButtonGroup();
group.add(rdSin);
group.add(rdCos);
this.getContentPane().add(rdSin);
this.getContentPane().add(rdCos);
this.getContentPane().add(btnDraws);
this.getContentPane().add(btnClear);
this.setVisible(true);
this.doLayout();
btnDraws.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
bDraw=true; SinCos.this.repaint();
}
});
btnClear.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
bDraw=false;SinCos.this.repaint();
}
});
rdSin.setSelected(true);
}
public void doLayout(){
super.doLayout();
rdSin.setBounds(10, 15, 50, 20);
rdCos.setBounds(rdSin.getX()+rdSin.getWidth()+5, 15, 50, 20);
btnDraws.setBounds(rdCos.getX()+rdCos.getWidth()+5, 12, 70, 25);
btnClear.setBounds(btnDraws.getX()+btnDraws.getWidth()+3, 12, 70, 25);
}

public static void main(String[] args){
EventQueue.invokeLater(new Runnable() {
public void run() {
new SinCos();
}
});
}
畫正弦餘弦的方法

5. 如何將JavaFX程序打包成exe

一、使用javafxpackager
javafxpackager是javafx提供的打包工具,好像從jdk1.7開始就包含這個工具了,它在 jdk 的 bin 目錄下。

第一步:新建兩個文件
一個放入你想打包的jar,另一個用來存放打包生成的exe,注意所有目錄、jar、exe名字都不要帶空格。
第二步:開始打包
在 jdk 的 bin 目錄下運行cmd,輸入javafxpackager,可以看到可用的參數,如下圖

我們使用deploy命令,大部分參數一般都是用不到的
我們可以使用下面的參數簡單打包
javafxpackager -deploy -native image -appclass test.Test -srcdir E://test1 -outdir E://test2 -outfile test -name testName
要按實際情況修改的,-appclass是包含main函數的類,要寫出包名。

成功以後出現這樣的提示

在test2目錄下會出現這些文件,bundles文件夾里就是已經打包好的exe文件了

6. 最新版IntelliJ IDEA旗艦版 + JDK10最新版,創建javafx項目後很多javafx的包不能導入。

(1)准備工作

1) 安裝JDK 6或者JDK 7

2) 安裝scala 2.10.x (注意版本)

2)下載Intellij IDEA最新版(本文以IntelliJ IDEA Community Edition 13.1.1為例說明,不同版本,界面布局可能不同)

3)將下載的Intellij IDEA解壓後,安裝scala插件,流程如下:

依次選擇「Configure」–> 「Plugins」–> 「Browse repositories」,輸入scala,然後安裝即可

(2)搭建Spark源碼閱讀環境(需要聯網)

一種方法是直接依次選擇「import project」–> 選擇spark所在目錄 –>
「SBT」,之後intellij會自動識別SBT文件,並下載依賴的外部jar包,整個流程用時非常長,取決於機器的網路環境(不建議在windows
下操作,可能遇到各種問題),一般需花費幾十分鍾到幾個小時。注意,下載過程會用到git,因此應該事先安裝了git。

第二種方法是首先在linux操作系統上生成intellij項目文件,然後在intellij IDEA中直接通過「Open
Project」打開項目即可。在linux上生成intellij項目文件的方法(需要安裝git,不需要安裝scala,sbt會自動下載)是:在
spark源代碼根目錄下,輸入sbt/sbt gen-idea

註:如果你在windows下閱讀源代碼,建議先在linux下生成項目文件,然後導入到windows中的intellij IDEA中。

(3)搭建Spark開發環境

在intellij IDEA中創建scala project,並依次選擇「File」–> 「project structure」
–> 「Libraries」,選擇「+」,將spark-hadoop
對應的包導入,比如導入spark-assembly_2.10-0.9.0-incubating-hadoop2.2.0.jar(只需導入該jar
包,其他不需要),如果IDE沒有識別scala 庫,則需要以同樣方式將scala庫導入。之後開發scala程序即可:

編寫完scala程序後,可以直接在intellij中,以local模式運行,方法如下:

點擊「Run」–> 「Run Configurations」,在彈出的框中對應欄中填寫「local」,表示將該參數傳遞給main函數,如下圖所示,之後點擊「Run」–> 「Run」運行程序即可。

如果想把程序打成jar包,通過命令行的形式運行在spark 集群中,可以按照以下步驟操作:

依次選擇「File」–> 「Project Structure」 –> 「Artifact」,選擇「+」–>
「Jar」 –> 「From Moles with
dependencies」,選擇main函數,並在彈出框中選擇輸出jar位置,並選擇「OK」。

最後依次選擇「Build」–> 「Build Artifact」編譯生成jar包。

7. 用java或者c程序輸出如下圖的這種簡單心形,誰能給我講講思路。加上程序示例更好

用方程的話肯定輸出不會和你的圖完全一致

心形線方程如圖

閱讀全文

與javafx正弦函數相關的資料

熱點內容
pps緩存文件怎麼刪除 瀏覽:10
家裡網路在用怎麼檢測 瀏覽:419
克拉漫播下載的文件名 瀏覽:417
壓縮好的文件哪裡找 瀏覽:831
百度網盤怎樣上傳文件夾 瀏覽:320
java發展是 瀏覽:892
程序編程結束還要做什麼 瀏覽:778
pcb打版文件有哪些 瀏覽:39
網路原來ip地址忘記了怎麼辦 瀏覽:142
iphone6s微信密碼設置 瀏覽:810
java將數字轉換成字母 瀏覽:854
c盤中的哪些是系統文件夾 瀏覽:668
分布式服務如何跨庫統計數據 瀏覽:829
力控轉發數據客戶端模式如何建立 瀏覽:200
怎麼樣讓自己的網站不被別人看到 瀏覽:711
編程擴展效果如何 瀏覽:335
榮耀暢玩手環同步qq 瀏覽:475
怎麼向sql中添加資料庫 瀏覽:596
錄歌失敗重啟app什麼意思 瀏覽:522
壓縮文件包怎麼在微信發送 瀏覽:432

友情鏈接