JAVA设置按钮无效,在Java中添加简单按钮,但是Java不允许我这样做

Ok so from my stand point my code is pretty decent enough to get a passing grade but I am having trouble adding a simple refresh/shuffle button. NOT USING the aids of JOptionPane.

Eclipse doesnt seem to recognize that I have created the button which doesnt make sense at all for me because its telling me something about a Node which the Button is in fact a node and it is created. But when I go into another class and add another button with the 3 line example it simply works. But when I move it to my homework program it simply gives me an error on the add method which breaks the whole program!

Says

"The method add(Node) in the type List is not applicable for the arguements (Button)"

Could anyone shed some light of where I could be going wrong in my code? It has to be something along the a node to string conversion or something I just cant seem to figure it out. Willing to take any hints given to me but please DO NOT SOLVE THE PROBLEM FOR ME.

Here is the question from the book basically.

"Write a program that lets the user click the refresh button to display four cards from a deck of 54 cards."

I just need some help on the button thats all. I literally have the rest.

Here is my code so far.

I Have left the imports out as there is just too many.

import javafx.application.Application;

import javafx.scene.Scene;

import javafx.scene.layout.BorderPane;

import javafx.scene.layout.HBox;

import javafx.scene.layout.Pane;

import javafx.geometry.Insets;

import javafx.geometry.Pos;

import javafx.stage.Stage;

import javafx.scene.image.Image;

import javafx.scene.image.ImageView;

import java.awt.Button;

import java.io.File;

import java.util.ArrayList;

public class Cards extends Application

{

public void start(Stage primaryStage)

{

ArrayList cards = new ArrayList<>(); //Array list

Shuffle(cards); //Shuffles the Cards

String file1 = new File("cards" + "/" + cards.get(1) + ".png").toURI().toString();

String file2 = new File("cards" + "/" + cards.get(2) + ".png").toURI().toString();

String file3 = new File("cards" + "/" + cards.get(3) + ".png").toURI().toString();

String file4 = new File("cards" + "/" + cards.get(4) + ".png").toURI().toString();

Pane pane = new HBox(20); //Creates the Box for the Images

pane.setPadding(new Insets(5, 5, 5, 5)); //Spreads the Images out

Image image = new Image(file1); //Creates the String Image

Image image2 = new Image(file2);

Image image3 = new Image(file3);

Image image4 = new Image(file4);

pane.getChildren().add(new ImageView(image)); //Adds the First Image

ImageView view1 = new ImageView(image);

view1.setFitHeight(100);

view1.setFitWidth(100);

pane.getChildren().add(new ImageView(image2)); //Adds the Second Image

ImageView view2 = new ImageView(image2);

view2.setFitHeight(100);

view2.setFitWidth(100);

pane.getChildren().add(new ImageView(image3)); //Add the Third Image

ImageView view3 = new ImageView(image3);

view3.setFitHeight(100);

view3.setFitWidth(100);

pane.getChildren().add(new ImageView(image4)); //Add the Fourth Image

ImageView view4 = new ImageView(image4);

view4.setFitHeight(100);

view4.setFitWidth(100);

HBox hbox = new HBox(5); //Creates the Box for the Button

Button shuffle = new Button("Shuffle"); //Creates the Button

hbox.getChildren().add(shuffle); //Should add the button but doesn't

shuffle.addActionListener( e -> //Listener for the button

{

Shuffle(cards);

});

BorderPane pane2 = new BorderPane();/ /Creates the Pane for the Button

pane2.setCenter(pane); //Sets the cards in the Center

pane2.setBottom(hbox); //Sets the Button on the bottom

BorderPane.setAlignment(hbox, Pos.CENTER);

hbox.setAlignment(Pos.BOTTOM_CENTER);//Aligns the Button to BOT_CENTER

Scene scene = new Scene(pane2); //Creates the Scene

primaryStage.setTitle("Cards");

primaryStage.setScene(scene);

primaryStage.show();

}

public void Shuffle(ArrayList cards)

//Allows the cards to Shuffle when called.

{

for (int i = 0; i <= 53; i++) //Sets the Number of Cards in Deck

cards.add(String.valueOf(i+1));

java.util.Collections.shuffle(cards);

}

public static void main(String[] args)

{

launch(args);

}

}

解决方案

You're using the AWT-button with your import java.awt.Button;, that's why you can use the method public void addActionListener(ActionListener l).

Replace your import to import javafx.scene.control.Button;. Furthermore you could use (analogue to your code) the following lambda:

shuffle.setOnAction( (x) -> //Listener for the button

{

Shuffle(cards);

});

Give it a try :)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值