我正在尝试用JavaFX做“MemoryGame”。我现在要处理的是在单击按钮后,使用CSS在一个函数中两次更改按钮的背景。
public void changeTransparent(ActionEvent event) {
butCver01.setStyle("-fx-background-color: transparent");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {}
butCver01.setStyle("-fx-background-color: green");
}
现在,当我们点击butCver01时,一秒钟后它将变成绿色。
正如我在评论中提到的,JavaFX应用程序线程不能在执行您的方法时调度下一个帧呈现(即“脉冲”)。使用thread.sleep
阻塞FX线程意味着它不能做任何事情,更不用说调度下一个脉冲了。一个阻塞的FX线程等于一个冻结的用户界面,你的用户将无法点击任何更多的卡试图获得匹配。
您应该使用动画API在FX线程上“随时间”执行操作。动画是“异步”执行的(在FX线程上),这意味着可以在动画运行时处理其他操作。启动动画的调用也会立即返回。这里有一个示例,它将在一秒钟内显示矩形下面的形状;但是,没有逻辑来确定是否显示两个匹配的形状,一次只显示两个形状,等等。
import javafx.animation.PauseTransition;
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.layout.HBox;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Polygon;
import javafx.scene.shape.Rectangle;
import javafx.scene.shape.Shape;
import javafx.stage.Stage;
import javafx.util.Duration;
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
HBox box = new HBox(10, createCard(true), createCard(true), createCard(false));
box.setPadding(new Insets(100));
primaryStage.setScene(new Scene(box));
primaryStage.show();
}
private StackPane createCard(boolean circle) {
Shape shape;
if (circle) {
shape = new Circle(50, Color.FORESTGREEN);
} else {
// create triangle
shape = new Polygon(0, 0, 50, 100, -50, 100);
shape.setFill(Color.FIREBRICK);
}
Rectangle cover = new Rectangle(0, 0, 100, 150);
cover.mouseTransparentProperty()
.bind(cover.fillProperty().isEqualTo(Color.TRANSPARENT));
cover.setOnMouseClicked(event -> {
event.consume();
cover.setFill(Color.TRANSPARENT);
PauseTransition pt = new PauseTransition(Duration.seconds(1));
pt.setOnFinished(e -> cover.setFill(Color.BLACK));
pt.playFromStart();
});
return new StackPane(shape, cover);
}
}
本文向大家介绍使用CSS更改按钮的背景色,包括了使用CSS更改按钮的背景色的使用技巧和注意事项,需要的朋友参考一下 要更改按钮的背景色,请使用background-color属性。 您可以尝试运行以下代码来更改按钮的背景色 示例
我已经创建了一个类,它扩展了。在该类中,当我按下一个按钮时,我想更改一个按钮的背景,该按钮被放置在主活动中。 我试图创建一个内部类来访问Main Active对象,但我得到的是这个错误: 尝试在空对象引用上调用虚拟方法android.content.pm.Application ationInfoandroid.content.Context.getApplication ationInfo()
问题内容: 点击时可以更改背景颜色吗?全部,仅使用CSS和HTML5? 问题答案: 基于我在评论中发布的小提琴,我对它进行了少许修改,以使用Bootstrap按钮CSS。 只需包含Bootstrap的CSS文件,然后使用以下代码即可。 HTML CSS 这将使用相邻的兄弟选择器。 它在这里起作用:(我已经添加了防止选择标签文本的标签,但是标签不是必需的) 浏览器支持 Chrome,Firefox
当我的按钮被按下时,我如何用xml更改文本和背景颜色? 要更改文本颜色,可以执行以下操作: 要更改背景,我可以做(在具有可绘制引用的选择器/项中使用它): 但我怎么能两样都做呢?假设我想要: 默认:黑色文本/白色背景 按下:白文/蓝底 我完全忘记了背景和文本颜色是分开管理的,所以我是这样做的: 在MyBackgroundColors.xml中,我管理背景,在FiltersButtonColors.
我有一个网络表单,我想提交一个PayPal按钮点击。 我能让其中一个工作,但不是两个都能。因此,贝宝按钮是提交表单,然后加载付款页面。此代码仅提交表单,不加载付款页面。 此代码仅加载付款页面: 我错过了什么?我需要第三个按钮来处理其他两个按钮吗?
问题内容: 我需要一个假定具有两个功能的按钮。 如果我点击一次,它将转到下一页。如果我按住按钮,它将允许我编辑按钮上的文本。 单击该按钮可以转到下一页,但是如果我按住该按钮,该如何实现允许我更改文本的第二个功能? 有人知道吗 Java代码 xml代码 问题答案: 您可以将第二个函数设置为setOnLongClickListener: 第一个函数是与setOnclickListener相同的: 检查