2016-11-08 5 views
5

Итак, с моей точки зрения мой код довольно приличный, чтобы получить прохождение оценки, но у меня возникли проблемы с добавлением простой кнопки обновления/перетасовки. НЕ ИСПОЛЬЗОВАНИЕ вспомогательных средств JOptionPane. Eclipse, похоже, не признает, что я создал кнопку, которая для меня вообще не имеет смысла, потому что она говорит мне что-то об узле, который Button на самом деле является узлом, и он создан. Но когда я перехожу в другой класс и добавляю еще одну кнопку с примером из 3 строк, она просто работает. Но когда я перехожу к моей домашней программе, это просто дает мне ошибку в методе добавления, который разбивает всю программу! ГоворитДобавление простой кнопки в java, но java не позволяет мне

«Метод дополнения (Node) в списке типов не применяется для заданы параметры (кнопка)»

Может кто-нибудь пролить некоторый свет, где я мог бы идти неправильно в моем коде? Это должно быть что-то по узлу для преобразования строк или что-то, что я просто не могу понять. Желая взять любые намеки, предоставленные мне, но, пожалуйста, НЕ РЕШИТЕ ​​ПРОБЛЕМУ ДЛЯ МЕНЯ.

В основном вопрос из книги. «Напишите программу, которая позволяет пользователю нажать кнопку обновления, чтобы отобразить четыре карты из колоды из 54 карт».

Мне просто нужна помощь на этой кнопке. Я буквально отдыхаю.

Вот мой код. Я оставил импорт, потому что их слишком много.

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<String> 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<String> 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); 

    } 

} 
+0

Не уверен, но раньше в вашем коде, вы делаете 'Pane панель = новый HBox (20); pane.setPadding (новые вставки (5, 5, 5, 5)); 'Вам нужно следовать этому шаблону? –

+0

@ScaryWombat Я имею в виду, что мне нужна панель, потому что она устанавливает карты соответственно над кнопкой обновления, когда я выясню, как правильно ввести кнопку в программу. Я добавлю комментарии к программе. – Vinnie

+0

Не могли бы вы показать нам свои заявления __import__? Я не разработчик Swing, но я предполагаю, что вы используете Java Swing (https://docs.oracle.com/javase/7/docs/api/javax/swing/ButtonModel.html#addActionListener(java. awt.event.ActionListener)) скорее кнопка JavaFX ... – SSchuette

ответ

4

Вы используете кнопку AWT с import java.awt.Button;, поэтому вы можете использовать метод public void addActionListener(ActionListener l).

Замените свой импорт на import javafx.scene.control.Button;. Кроме того, вы можете использовать (аналог кода) следующим лямбда:

shuffle.setOnAction((x) -> //Listener for the button 
{ 
    Shuffle(cards); 
}); 

Дайте ему попробовать :)

+0

@Sschutte вы, сэр, я люблю: P Thankyou так много! Я знал, что это было что-то глупое. Теперь просто нужно запустить кнопку: P – Vinnie

+0

Не беспокойтесь, это идеал StackOverflow! Если ответ вам помог, пожалуйста, примите его. – SSchuette

+1

Сделал мой друг. – Vinnie