首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Javafx重置按钮css为以前的样式

Javafx重置按钮css为以前的样式
EN

Stack Overflow用户
提问于 2017-04-24 17:37:56
回答 3查看 2.9K关注 0票数 1

注: Javafx新手

问题:

许多网站和教程展示了如何使用类或ID设置按钮的样式。

在从Id中设置样式之后,我需要将样式还原到以前的状态,或者简单地还原为.button类。

Styles:

我有以下css (摘录)用于我的所有按钮:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.button {
    -fx-text-fill: white;
    -fx-font-family: "Arial Narrow";
    -fx-font-weight: bold;
    -fx-background-color: linear-gradient(#61a2b1, #2A5058);
    -fx-effect: dropshadow( three-pass-box , rgba(0,0,0,0.6) , 5, 0.0 , 0 , 1 );
}

以及所选按钮的Id:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#button-selected {
    -fx-background-color: linear-gradient(#3f6770, #82c0ce);
}

代码(提取):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//load stylesheet from resources into scene    someScene.getStylesheets().add(Main.class.getResource("/gui.css").toExternalForm());
//...
Button b = new Button("some button");
//...
b.getStyleClass().add("button");       <----- adds .button class style to button

一些在稍后调用时触发:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(activeButton, bSelectedButton) -> {

    //...
    if (!activeButton.equals(bSelectedButton)){

        //restore activeButton to ".button" class

        bSelectedButton.setId("button-selected");
    }
    //...

}

作为上面的一个简短摘要:(将问题放到实际应用中)

触发发生,例如鼠标单击事件,调用lambda。

这将检查按钮是否为“相同的按钮”,如果不是,则:

  • 清除前一个按钮的格式activeButton
  • 并使用bSelectedButton id设置新按钮的#button-selected样式。

请注意:

我试过:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.button:pressed {
    -fx-background-color: linear-gradient(#3f6770, #82c0ce);
}

但是在点击后,它不会像预期的那样改变颜色(在按钮上)

问题:

如何"unsetId“/ "removeId”来恢复按钮的前一种样式,

或者简单地说,如何从加载的样式表中设置按钮上的活动样式?

EN

回答 3

Stack Overflow用户

发布于 2017-04-24 19:52:46

使用切换按钮而不是标准按钮。

你好像在重新发明方向盘。一个可选择的按钮是一个ToggleButton,您可能应该使用它。切换按钮有一个选择psuedo状态,用于在选择按钮时配置样式。

除了-fx-背景色用法

作为一个旁白,它通常不是最好的直接设置-fx-背景颜色为控制,而是设置一个较高级别的查找颜色,如-fx-基础。有关这些颜色的定义,请参阅modena.css,以及如何使用它们的示例(以及伪状态选择器)。

关于-fx-效果用法的评论

在事物上设置阴影效果通常会导致模糊文本。由于这个原因(和其他原因),为JavaFX控件模拟阴影3D效果的标准方法是分层背景,这有点复杂,但在JavaFX CSS参考中的文档比较少,大量的示例都在modena.css文件中。

关于css id使用的通知

元素的css id不应更改。它用于标识元素,并且在给定的文档中应该是唯一的。因此,您不应该将id设置为类似于button-selected的内容。相反,您应该使用类或伪类来维护动态样式信息的键。

通过将CSS id设置为null,您可以有效地“取消”CSS id,但我不建议这样做。

相关按钮样式

相关答案提到了ToggleButtons的样式设置(但与您要求的样式略有不同):

自定义psuedo类样式

如果您确实需要创建自己的psuedo类,请参见:

按样式设置的样式

如果不需要或不想使用伪类,则可以在控件上设置不同的样式类并使用“和”样式选择器

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
styleclass.anotherstyleclass { 
   \\ your style attributes 
}

例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.button.selected { 
   -fx-base: palegreen; 
}

使用此方法,您需要根据需要从节点样式类列表中添加和删除其他样式类。

通用可选节点样式

如果您想要一种不与按钮类型绑定的非常通用的可选择节点样式,请参见此处的解决方案:

票数 3
EN

Stack Overflow用户

发布于 2017-04-24 20:24:57

为了通过css文件切换样式,可以使用以下命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
scene.getStylesheets().clear();
setUserAgentStylesheet(null);
scene.getStylesheets().add(getClass().getResource("theme1.css").toExternalForm());

为了您的目的,恢复以前的样式,我认为您不能直接这样做,但您可以这样做: 1)使用变量来存储previousStyle。

2)当您切换到新样式时,您必须设置值previousStyle是当前样式。因此,如果您想恢复到以前的样式,只需调用previousStyle。

票数 1
EN

Stack Overflow用户

发布于 2017-04-25 00:02:14

我的解决方案确实遵守所有css规则。

w3schools

在引用特定/唯一对象时,应该使用id选择器(由#your_id_name表示)。

元素的id在页面中应该是唯一的,因此id选择器用于选择一个唯一的元素!

注意:在我的解决方案中没有遵守这个规则。

解决方案:

CSS包括:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#button-default {
    -fx-text-fill: white;
    -fx-font-family: "Arial Narrow";
    -fx-font-weight: bold;
    -fx-background-color: linear-gradient(#61a2b1, #2A5058);
    -fx-effect: dropshadow( three-pass-box , rgba(0,0,0,0.6) , 5, 0.0 , 0 , 1 );
}

#button-default:hover {
    -fx-background-color: linear-gradient(#82c0ce, #3f6770);
}

#button-selected {
    -fx-background-color: linear-gradient(#3f6770, #82c0ce);
}

代码:

在创建按钮时,我将id设置在那里:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Button b = new Button();
//....
b.setId("button-default");

一些触发事件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//....
(activeButton, newSelectedButton) -> {
    if (!activeButton.equals(newSelectedButton)){
        activeButton.setId("button-default");
        newSelectedButton.setId("button-selected");
    }
} 
//....

一个简短的摘要:

该按钮是使用来自id文件的特定css创建的。

当某些事件被触发时,需要更改样式:

  • 要重置为默认样式的按钮,其id称为button-default
  • 然后用称为button-selected的样式设置新按钮样式

备注:不推荐,因为它不遵守标准实践,但为了完整起见,我在这里发布了它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43600206

复制
相关文章
cordova插件- Media
添加插件 $ cordova plugin add cordova-plugin-media 插件的使用 Methods · media.getCurrentAmplitude:Returns th
roc
2018/03/30
1.3K0
cordova插件- Media
cordova插件- Contacts
添加插件 $cordova plugin add cordova-plugin-contacts 图 8出现如上则添加成功 插件的使用 Methods navigator.contacts.create navigator.contacts.find navigator.contacts.pickContact Example <!--这是选择联系人--> function openContacts () { navigator.contacts.pickContact(function (con
roc
2018/03/30
1.1K0
cordova插件- Geolocation
添加插件 $ cordova plugin add cordova-plugin-geolocation 插件的使用 Methods navigator.geolocation.getCurrent
roc
2018/03/30
9960
cordova插件- Geolocation
cordova插件- Splashscreen
添加插件 $ cordova plugin addcordova-plugin-splashscreen 插件的使用 Methods 此处没有方法,主要是一些config.xml的配置 2. Exa
roc
2018/03/30
6940
cordova插件- Splashscreen
Cordova插件须知
ionic可以很方便的安装cordova插件,最新ionic-cli要求cordova插件里面有package.json和plugin.xml才能安装成功,如果缺失,请自行补上,而原来旧的cli不要求package.json文件(插件目录里的,不是ionic项目里的)。
IT晴天
2018/08/20
1.2K0
cordova插件-Dialogs
添加插件 $ cordova plugin add cordova-plugin-dialogs 图 10如上则添加成功 插件的使用 Methods navigator.notification.a
roc
2018/03/30
6900
cordova插件-Dialogs
cordova插件- Inappbrowser
添加插件 $ cordova plugin addcordova-plugin-inappbrowser 插件的使用 Methods cordova.InAppBrowser.open 2. Ex
roc
2018/03/30
8290
cordova插件- Inappbrowser
cordova插件-Device
添加插件 $ cordova plugin add cordova-plugin-device 图 11如上则添加成功 插件的使用 Methods(没有方法,只有对应的属性) device.cord
roc
2018/03/30
9000
cordova插件-Device
Cordova安装
1.安装 别使用cnpm,安好后会缺少包 如果想加速可以用下面的 npm install -g cordova --registry=https://registry.npm.taobao.or
治电小白菜
2020/08/25
4950
Cordova安装
mysql卸载与安装_cad卸载后无法重新安装
1、首先,停止window的MySQL服务,【windows键+R 】打开运行框,输入【services.msc】打开(或者找到“控制面板”-> “管理工具”-> “服务”,停止MySQL后台服务)服务管理器,停止MySQL后台服务。
全栈程序员站长
2022/11/11
1.3K0
Cordova 创建 Demo插件
MyPluginName.js JavaScript接口,用于插件与混合应用的接口。
acc8226
2022/05/17
7000
cordova插件-Device Orientation
添加插件 $ cordova plugin addcordova-plugin-device-orientation 图 13如上则插入成功 插件的使用 Methods navigator.com
roc
2018/03/30
7680
cordova插件-Device Orientation
如何卸载Eclipse安装的插件
有时候我们需要卸载Eclipse上安装的插件,看到有些朋友给出的解决方案是:删除要卸载插件在features以及plugins目录下的相关文件以及jar包,但我不认同这种方法,主要有以下原因:
johnhuster的分享
2022/03/28
1.3K0
如何卸载Eclipse安装的插件
cordova插件-Device Motion
添加插件 $ cordova plugin addcordova-plugin-device-motion 图 12如上则插入成功 插件的使用 Methods navigator.accele
roc
2018/03/30
9950
cordova插件-Device Motion
cordova插件之InAppBrowser
场景 Cordova插件InAppBrowser用于在移动端打开url链接 使用步骤 安装插件 cordova plugin add cordova-plugin-inappbrowser 使用插件方法 window.cordova.InAppBrowser.open("你要打开的url", '_system', 'location=no,hidden=yes'); 参数说明 _system:系统自带浏览器打开 _blank:app内webview打开 hidden:是否隐藏打开的url链接
安德玛
2022/03/08
3800
cordova插件- Media Capture
添加插件 $ cordova plugin addcordova-plugin-media-capture 插件的使用 Methods capture.captureAudio capture.ca
roc
2018/03/30
1K0
cordova插件- Media Capture
cordova插件-File Transfer
添加插件 $ cordova plugin addcordova-plugin-file-transfer 图 15如上则插入成功 插件的使用 Methods l upload: Sendsa f
roc
2018/03/30
1.1K0
cordova插件-File Transfer
cordova插件- Network Information
添加插件 $cordova plugin add cordova-plugin-network-information 插件的使用 Methods document.addEventListener
roc
2018/03/30
5760
cordova插件- Network Information
Jenkins插件无法安装解决
1、问题 jenkins各种改源地址都不行,都无法安装更新插件 2、可行方案 1、更改源地址(http://mirror.esuni.jp/jenkins/updates/update-center.json) 2、更改配置 a. vim jenkins/updetes/default.json b.把:"http://www.google.com/" 改成 "http://www.baidu.com/" 把:"https://updates.jenkins.io/do
cywhat
2022/12/02
2.9K0
【说站】ps卸载不干净无法安装
1、首先,试试正常的卸载方式,在控制面板上卸载PS,这样的问题在破解版的PS卸载中很容易出现。
很酷的站长
2022/11/23
1.6K0
【说站】ps卸载不干净无法安装

相似问题

无法卸载Cordova插件

517

无法安装cordova插件

11

Visual studio无法卸载Apache Cordova插件

14

无法安装Cordova网络插件

21

无法在AndroidStudio2.0中安装或卸载任何插件

23
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文