当前位置: 首页 > 知识库问答 >
问题:

如何在JavaFX中恢复按钮上的onclick效果

司雅畅
2023-03-14

我寻找了关于这个问题的解决方案&在Silverlight和JavaScript上找到了一些解决方案,但在JavaFX上没有找到。

关于这个问题:

我正在用JavaFX设计一个GUI,其中添加了两个按钮:ADD和REMOVE

我已经使用CSS为ADD按钮设置了样式,但它已经失去了悬停&onclick效果。为了更好地理解这个问题,我附上了几张图片

  1. 如果您查看此处的照片,您将看到当单击REMOVE按钮时,它会略微改变其颜色,以提供当前正在单击的效果。此外,当光标悬停在它上面时,它会变得比平时稍微亮一些。

此按钮的代码如下所示

VBox rightBox = new VBox(remBttn);
rightBox.setPadding(new Insets(10));
rightBox.setAlignment(Pos.CENTER);
remBttn.setPadding(new Insets(100,0,100,0));
remBttn.setPrefWidth(100);
remBttn.setOnAction(
        new EventHandler<ActionEvent>()
        {
            public void handle(ActionEvent ae)
            {
                myLabel.setText("You Clicked The REMOVE Button");
            }
        });
remBttn.setFont(Font.font(20));

代码如下:

VBox leftBox = new VBox(addBttn);
leftBox.setPadding(new Insets(10));
leftBox.setAlignment(Pos.CENTER);
addBttn.setPadding(new Insets(100,0,100,0));
addBttn.setPrefWidth(100);
addBttn.setStyle("-fx-background-color: #c3c4c4, linear-gradient(#d6d6d6 50%, white 100%), radial-gradient(center 50% -40%, radius 200%, #e6e6e6 45%, rgba(230,230,230,0) 50%); -fx-background-radius: 30; -fx-background-insets: 0,1,1; -fx-text-fill: black; -fx-effect: dropshadow( three-pass-box , rgba(0,0,0,0.6) , 3, 0.0 , 0 , 1 ); -fx-focus-color: transparent; -fx-base: coral;");

所以我想知道什么方法或属性可以用来在不改变样式的情况下带回相同的效果。

共有1个答案

李开宇
2023-03-14

你改变按钮背景的那一刻,它就会失去默认的悬停和点击效果,所以我认为更好的做法是在CSS中设置悬停和点击效果。

顺便说一句,不要在代码中再次设置样式,只需在src文件夹中创建一个css文件,然后使用此链接到场景。

scene.getStylesheets().add(getClass().getResource("your_file_name.css").toExternalForm());

然后使用addbttn.setid(“addbttn”)将id添加到添加按钮;然后在your_file_name.css中引用它,如

#addBttn{
   /*Your custom default button style*/
}

#addBttn:hover{
   /*Your button style on hover*/
}

#addBttn:pressed{
    /*Your button style on pressed*/
 }

希望这能解决你的问题。

 类似资料:
  • 我是JAVAfx的新手,我正在尝试编写一个web浏览器。我面临的问题是:-我想把屏幕左下方的按钮放在右下方。 我正在尝试这段代码,但它不起作用。谁来帮帮我

  • 我正在使用javaFX。我做了一个按钮并为此设置了一个图像。代码是: 但是我想当我点击按钮时,图像会变成另一张图片。我该怎么做呢?

  • 问题内容: 我正在尝试使用以下代码设置按钮文本: 这是我的FXML: 但这行不通,我不明白为什么,还有其他人知道如何使用JavaFX设置按钮文本吗?>。>; 我觉得JavaFX不像Swing那样简单…但是无论如何,有人知道我在做什么错吗?另外,有没有人知道有什么资源可以学习FXML?我喜欢FXML而不是用Java进行编码,但是似乎没有太多的东西,我是否是世界上唯一喜欢FXML而不是JavaFX G

  • 我正在用JavaFX制作一个桌面应用程序,我制作了一个仅出现5秒的启动屏幕,5秒后它会显示一个带有按钮的新阶段,当我单击按钮时,它会发送一个错误: 下面是JavaFX类 RootForm.java(启动屏幕) } RootForm.fxml(启动屏幕fxml) Error.fxml(带按钮的第二阶段) ErrorController.java(应该出现的第二阶段) 在我点击第二个屏幕上的按钮后,我

  • 如何在同一个字母中设置助记符解析。在我的项目中,在button中设置助记符,但button<code>setText</code>在每个事件操作中都会发生变化,但在<code>_o</code>中助记符是相同的,但短键只在一个事件中起作用。如何解决这个问题 抱歉,我的< code >英语

  • 我在Inkscape中创建了一个SVG图像。我把它和我的类放在同一个目录中。 有没有办法加载该图像并将其转换为SVG路径? 这背后的想法是用< code>getClass()获取图像。getResource("image.svg ")。toExternalForm()并将其转换为< code > imagesvg . set content()方法的SVGPath。之后,我想用< code>but