2016-11-08 14 views
5

Ok như vậy từ điểm đứng của tôi mã của tôi khá phong nha, đủ để có được điểm vượt qua nhưng tôi gặp khó khăn khi thêm nút refresh/shuffle đơn giản. KHÔNG SỬ DỤNG aids của JOptionPane. Eclipse dường như không nhận ra rằng tôi đã tạo ra nút mà không có ý nghĩa ở tất cả cho tôi bởi vì nó nói với tôi một cái gì đó về một nút mà trong thực tế là một nút và nó được tạo ra. Nhưng khi tôi đi vào một lớp khác và thêm một nút khác với ví dụ 3 dòng nó chỉ hoạt động. Nhưng khi tôi chuyển nó sang chương trình bài tập về nhà của tôi, nó chỉ đơn giản là mang lại cho tôi một lỗi trên phương pháp thêm mà phá vỡ toàn bộ chương trình! SaysThêm một nút đơn giản trong java, nhưng java không cho phép tôi

"Các phương thức add (Node) trong Danh mục loại không áp dụng cho các đối số (Button)"

bất cứ ai có thể làm sáng tỏ về nơi tôi có thể đi sai trong mã của tôi? Nó phải là một cái gì đó dọc theo một nút để chuyển đổi chuỗi hoặc một cái gì đó tôi chỉ cant dường như con số nó ra. Sẵn sàng đưa ra bất kỳ gợi ý nào cho tôi nhưng xin vui lòng KHÔNG GIẢI QUYẾT VẤN ĐỀ CHO TÔI.

Đây là câu hỏi từ cuốn sách về cơ bản. "Viết chương trình cho phép người dùng nhấp vào nút làm mới để hiển thị bốn thẻ từ một bộ bài 54 thẻ."

Tôi chỉ cần trợ giúp về nút đó. Tôi theo nghĩa đen có phần còn lại.

Đây là mã của tôi cho đến thời điểm này. Tôi đã để lại hàng nhập vì có quá nhiều.

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

Không chắc nhưng trước đó trong mã của bạn, bạn làm 'Pane pane = new HBox (20); pane.setPadding (Insets mới (5, 5, 5, 5)); 'Bạn có cần theo mẫu này không? –

+0

@ScaryWombat Tôi có nghĩa là tôi cần loại Pane ở đó vì nó thiết lập các thẻ phù hợp trên nút làm mới một khi tôi tìm ra cách để có được nút đúng vào chương trình. Tôi sẽ thêm ý kiến ​​vào chương trình. – Vinnie

+0

Bạn có thể vui lòng hiển thị cho chúng tôi câu __import__ của bạn không? Tôi không phải là một nhà phát triển Swing, nhưng tôi đoán bạn đang sử dụng một Swing Java (https://docs.oracle.com/javase/7/docs/api/javax/swing/ButtonModel.html#addActionListener(java. awt.event.ActionListener)) thay vì một nút JavaFX ... – SSchuette

Trả lời

4

Bạn đang sử dụng AWT-nút với import java.awt.Button; của bạn, đó là lý do tại sao bạn có thể sử dụng phương pháp public void addActionListener(ActionListener l).

Thay thế quá trình nhập của bạn thành import javafx.scene.control.Button;. Ngoài ra bạn còn có thể sử dụng (tương tự để mã của bạn) lambda sau:

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

Hãy thử :)

+0

@Sschutte bạn ạ Tôi yêu: P Thankyou rất nhiều! Tôi biết đó là điều ngu ngốc. Bây giờ chỉ cần nhận được nút để thực sự làm việc: P – Vinnie

+0

Không phải lo lắng đó là idead của StackOverflow! Nếu câu trả lời giúp bạn, hãy chấp nhận nó. – SSchuette

+1

Xong bạn tôi. – Vinnie

Các vấn đề liên quan