Ok, więc z mojego punktu widzenia mój kod jest dość przyzwoity, aby uzyskać ocenę pozytywną, ale mam problem z dodaniem prostego przycisku odświeżania/losowania. NIE KORZYSTAJĄC z pomocy JOptionPane. Eclipse nie wydaje się rozpoznawać, że utworzyłem przycisk, który w ogóle nie ma dla mnie sensu, ponieważ mówi mi coś o węźle, którego przycisk jest w rzeczywistości węzłem i jest tworzony. Ale kiedy przejdę do innej klasy i dodaję inny przycisk z przykładem 3 liniowym, po prostu działa. Ale kiedy przeniesię to do mojego programu prac domowych, po prostu daje mi błąd w metodzie dodawania, która przerywa cały program! MówiDodanie prostego przycisku w języku Java, ale java nie pozwala mi na
„Metoda add (Node) na liście typu nie ma zastosowania dla arguements (przycisk)”
Czy ktoś może rzucić nieco światła, gdzie może być nie tak w moim kodu? Musi to być coś na węźle, aby przekonwertować ciąg znaków lub coś, czego po prostu nie rozumiem. Chętnie podejmę wszelkie wskazówki, które mi dano, ale proszę NIE ROZWIĄZUJ PROBLEMU DLA MNIE.
Oto podstawowe pytanie z książki. "Napisz program, który pozwala użytkownikowi kliknąć przycisk odświeżania, aby wyświetlić cztery karty z talii 54 kart."
Potrzebuję tylko pomocy na przycisku, to wszystko. Dosłownie resztę mam.
Oto mój kod do tej pory. Zostawiłem import, ponieważ jest ich zbyt wiele.
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);
}
}
Nie jestem pewien, ale wcześniej w kodzie, robisz 'Pane pane = new hbox (20); pane.setPadding (nowe wstawki (5, 5, 5, 5)); "Czy musisz przestrzegać tego wzoru? –
@ScaryWombat Mam na myśli to, że potrzebuję tamtej tafli, ponieważ ustawia ona karty odpowiednio nad przyciskiem odświeżania, gdy tylko wymyślę, jak poprawnie wprowadzić przycisk do programu. Dodam komentarze do programu. – Vinnie
Czy możesz nam pokazać swoje instrukcje __import__? Nie jestem programistą Swing, ale domyślam się, że używasz Java Swing (https://docs.oracle.com/javase/7/docs/api/javax/swing/ButtonModel.html#addActionListener(java. awt.event.ActionListener)) raczej przycisk JavaFX ... – SSchuette