Saya mencoba membuat kelas Button dengan gaya tertentu.

public class RoundBTN extends Button{
    public RoundBTN(String name){
        Button roundButton = new Button(name);
        roundButton.setStyle("-fx-background-color: #20B2AA; -fx-background-radius: 15px; -fx-text-fill: #ffffff");
        getChildren().add(roundButton);
    }
}

Kemudian ketika saya pergi ke kelas aplikasi saya, coba buat tombol baru:

@Override
public void start(Stage stage) throws Exception {
    StackPane layout = new StackPane();

    layout.setPadding(new Insets(5));
    layout.getChildren().add(new RoundBTN("test"));

    stage.setScene(new Scene(layout,200,200));
    stage.show();
}

Ketika saya menjalankan program, saya mendapatkan tombol normal kosong tanpa gaya.

Maaf untuk pertanyaan noob, tapi saya tidak bisa membuatnya berfungsi.

1
Abolfazl Sadeghian 9 April 2021, 09:14

1 menjawab

Jawaban Terbaik

Anda membuat Button baru di konstruktor kelas RoundBTN. Ini tidak mengubah RoundBTN sama sekali.

Hal pertama yang perlu Anda lakukan di konstruktor kelas RoundBTN adalah memanggil konstruktor superclass. Kemudian Anda tidak membuat Button baru melainkan hanya mengatur gaya.

import javafx.scene.control.Button;

public class RoundBTN extends Button {
    public RoundBTN(String name){
        super(name);
        setStyle("-fx-background-color: #20B2AA; -fx-background-radius: 15px; -fx-text-fill: #ffffff");
    }
}

Tetapi jika semua yang ingin Anda lakukan hanyalah mengubah gaya, Anda tidak perlu memperluas kelas Button, cukup buat Button biasa dan atur gayanya.

Button b = new Button("test");
b.setStyle("-fx-background-color: #20B2AA; -fx-background-radius: 15px; -fx-text-fill: #ffffff");
1
Abra 9 April 2021, 09:02