我希望有几个JavaFX按钮,用文本更新应用程序中的一个标签。出于测试目的,它只是按钮文本。
我一开始做的很好,看起来是这样的:
String Text = "...";
public void kons() {
System.out.println("Works...");
System.out.println(Text);
Tekst.setText(Text);
Button G4 = new Button("Spadantes");
G4.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
Text = G4.getText();
kons();
}
});
然后,我决定用CSS对我的按钮进行样式化,因为我想用不同的方式对几组按钮进行样式化,所以我以这种方式对JavaFX Button类进行了子类化:
public class Buttons extends Button {
public Buttons(String text) {
super(text);
getStylesheets().clear();
getStylesheets().add("./Buttons.css");
这仍然有效。但是现在我希望我的事件处理程序被移动到Button子类(以避免将完全相同的代码复制粘贴到我的每个按钮中)。我做的事情是这样的:
public class Buttons extends Button {
public Buttons(String text) {
super(text);
getStylesheets().clear();
getStylesheets().add("./Buttons.css");
setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
Main.Text = getText();
Main.kons();
}
});
}
}
主要是我的扩展应用程序类
Tekst是我的标签。
可悲的是,它给我带来了从静态上下文调用非静态方法和变量的例外。据我所知,实例是静态的,定义是非静态的。我试图改变一切的方式静态,但它给我的红墙的错误点击按钮后(没有在编译过程中)。我也试图以某种方式调用我的应用程序的实例,但我不知道如何(从我所理解的扩展应用程序类intantiates自己,而启动程序,所以没有名称,我可以称之为它的标签。
我正在寻找的是“快速而肮脏的解决方案”,能够使用子类按钮(或其他滑块、文本字段等),调用“屏幕上”更新内容的方法。
[编辑]我使用的当然是最新的Java。以防万一。
与其子类化,为什么不编写一个实用方法来为您创建按钮呢?我也不建议将文本
变量作为实例变量:直接引用标签
。
public class SomeClass {
private Label tekst ;
// ...
private Button createButton(String buttonText) {
Button button = new Button(buttonText);
button.getStylesheets().add("Buttons.css") ;
button.setOnAction(e -> tekst.setText(buttonText));
return button ;
}
}
然后,在同一个类中,当您需要其中一个按钮时,只需执行以下操作
Button button = createButton("Text");
如果您真的想创建子类(我觉得这似乎没有必要),则需要将对标签的引用传递给子类:
public class LabelUpdatingButton extends Button {
public LabelUpdatingButton(String text, Label labelToUpdate) {
super(text);
getStylesheets().add("Buttons.css");
setOnAction(e -> labelToUpdate.setText(getText()) );
}
}
然后从组装UI的类中可以执行以下操作
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
Label tekst = new Label();
Button someButton = new LabelUpdatingButton("Button text", tekst);
// etc...
}
}
但是同样,创建一个子类,除了定义调用公共API方法的构造函数之外什么也不做,是多余的,imo。
此外,为按钮创建整个样式表有点不寻常。通常,您会在按钮上设置样式类:
button.getStyleClass().add("my-button-class");
然后在样式表中添加到场景
do
.my-button-class {
/* styles for this type of button */
}
RootController类是我需要进行工作的地方。在方法private void handleDelete()中,您可以在注释中看到一些代码,这是一个工作代码,但我无法找到从ContentController类加载数据的方法,这是上面的代码垃圾。 我将感谢任何关于如何使它工作的想法。
我对javafx和场景构建器非常陌生。当单击按钮时,我试图创建一个新标签。以下是按钮创建标签的方法: 但它不起作用:(是否因为我没有在fxml中创建lbl1?是否可以在java代码中创建标签而不在fxml中创建?请帮助我!
下面是使用引导模板的单选按钮组的代码片段。但我试图做的是每次切换选项时更改单选按钮的类部分(即选中单选按钮时,标签类将为“btn btn primary”,如果未选中,标签类将为“btn btn default”)。有人知道如何做到这一点吗?
当我想用帖子的现有标签编辑帖子时,它只显示一个标签,尽管所选帖子中有更多标签。我还想在后期编辑刀片中输入新标签。 后期创建代码 **post控制器中的post更新代码** **后期编辑刀片的标签代码**
本文向大家介绍如何使用JavaScript更改警报框中的按钮标签?,包括了如何使用JavaScript更改警报框中的按钮标签?的使用技巧和注意事项,需要的朋友参考一下 使用标准警报框,您无法更改按钮标签。要更改标签,请使用自定义警报框。在这里,警报框的“确定”更改为“谢谢您的通知!” 例如:
我有一个FXML文档,其中包含我的JavaFX项目的视觉基础,我想通过使用一个窗格来创建一个自己的Topbar(X、最小值/最大值等等)。但我的程序将有多个页面(场景),为了保持代码干净,我想将自定义Topbar作为一个单独的类(有点像组件对象)。我只是不知道该如何在我使用的FXML基础上实现这个类(我使用的是Scene Builder)。