- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
我正在使用 netbeans 在 java fxml 元素中创建一个 GUI。我想使用 bootstrap 来设置 gui 的样式,但我注意到 javafx 中的所有内容都以 fx-
为前缀。仍然有办法让 bootstrap 为我的元素工作吗? bootstrap 甚至可以与 javafx 一起使用吗?
最佳答案
在 JavaFX WebView 中呈现 Bootstrap
Bootstrap 是一个基于 HTML 的框架。
因此要在 JavaFX 中使用 Bootstrap,请使用 JavaFX 的 HTML 渲染组件 WebView呈现 Bootstrap HTML/CSS 和 JavaScript。
示例应用程序
执行 Bootstrap 和 JavaFX UI 基本集成的示例应用程序。
屏幕顶部的 JavaFX 按钮在 WebView 页面中导航以呈现不同类型的 Bootstrap 组件。
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ToolBar;
import javafx.scene.layout.VBox;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
public class BaseJump extends Application {
private static final String BOOTSTRAP_PREFIX = "http://getbootstrap.com/components/#";
private enum Anchor { progress, jumbotron, badges, pagination }
@Override public void start(Stage stage) throws Exception {
final WebView webview = new WebView();
final ToolBar nav = new ToolBar();
for (Anchor anchor : Anchor.values()) {
nav.getItems().add(
new NavButton(
anchor,
webview
)
);
}
VBox layout = new VBox();
layout.getChildren().addAll(
nav,
webview
);
Scene scene = new Scene(layout);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) { launch(args); }
private class NavButton extends Button {
public NavButton(final Anchor anchor, final WebView webview) {
setText(anchor.toString());
setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
webview.getEngine().load(BOOTSTRAP_PREFIX + anchor.toString());
}
});
}
}
}
附加的、稍微不相关的问题
Is it possible to intercept button click events from a web view?
是的。您可以通过 WebEngine 提供的 w3c DOM API 访问在 Java 代码中附加点击处理程序。有关详细信息,请参阅 WebEngine 文档:
Access to Document Model
The WebEngine objects create and manage a Document Object Model (DOM) for their Web pages. The model can be accessed and modified using Java DOM Core classes. The getDocument() method provides access to the root of the model. Additionally DOM Event specification is supported to define event handlers in Java code.
The following example attaches a Java event listener to an element of a Web page. Clicking on the element causes the application to exit:
EventListener listener = new EventListener() {
public void handleEvent(Event ev) {
Platform.exit();
}
};
Document doc = webEngine.getDocument();
Element el = doc.getElementById("exit-app");
((EventTarget) el).addEventListener("click", listener, false);
但是,对我来说,通常使用 JavaScript(特别是 jQuery)而不是 Java 更容易处理与 w3c 文档的接口(interface)。这是从 Java 代码发出的示例,a jQuery call to provide click handlers in a WebView .
在 Fextile 上(Bootstrap 查找 native JavaFX 控件)
Why not just port bootstrap.css to conform to the javafx naming conventions?
因为:
仍然可以进行移植(如 Philippe 的回答中所链接),这就是 Takayuki Okazaki 在他的 Fextile project 中创建的内容。 :“Twitter Bootstrap 类似于 JavaFX 的 UI 框架。将主题应用到您的应用程序,就像通过 JavaFX CSS 的 Twitter Bootstrap 一样。”。不要指望与 HTML 中的 Bootstrap 完全匹配,但它应该允许不使用 HTML 的 JavaFX 控件非常接近于使用 HTML 中的 Bootstrap 实现的效果。
您还可以创建一个混合应用程序,其中 UI 的某些部分来自带有 Bootstrap 的 HTML,而另一些部分则使用 Fextile 从 JavaFX 控件呈现。如果您将这种方法应用于此答案中的示例应用程序,那么 JavaFX 按钮“progress”、“jumbotron”等看起来就像它们的 HTML bootstrap 对应物,从而使整个应用程序的外观和感觉更加一致。
另外,请注意 Foundation styles for JavaFX 有一个类似的元素,如本公告所述Oracle JavaFX forum post .该元素模仿基本的 Foundation寻找 native JavaFX 控件。对于某些用途,采用 Foundation 样式可能比 Bootstrap 样式更合适,因为元素的范围比 Bootstrap 小(据我所知)。
这是关于如何创建 Foundation 样式的问答(来自 Oracle JavaFX 论坛帖子)(因此有人可以相对了解扩展 Fextile 以获得额外的 Bootstrap 样式功能所涉及的内容)。请注意,问答有点旧,从那时起 CSS analyzer已添加到 SceneBuilder:
1) How difficult was this work?
No at all: the whole experience was very pleasant and very easy to do. This is my first JavaFX app (a map style editor with real time preview)
2) Was it very time consuming?
No: using the preview ScenceBuilder 1.1 the styles are updated on the fly - the SceneBuilder could do with a built in CSS editor, but that's only minor: the workflow was quite simple anyway
3) For a simple port do you think that you need any design skills at all, or could anybody have really done this who knows a bit of css/html/javafx?
Anyone can do this: my background is server side code - I don't do much in the way of front ends - I know JS and HTML very well but my CSS leaves a lot to me desired: so basically if I can do it ...
4) Was the difference between the javafx css syntax and the html css syntax a major pain or not really an issue?
Once I got used to it, made no difference although I do keep forgetting to add '-fx-' and the -fx-text-fill I always type as -fx-text-color ...
5) Similarly did a lack of a one-to-one correspondence between html document tags (e.g. the header tags) and JavaFX complicate this?
No
6) Will the upcoming rich text support in JavaFX 8 simplify (or make possible) more of these kinds of ports?
I need to have a look at this: as I said I'm a complete beginner with JavaFX so I'm still catching up on the current implementation.
The bootstrap styles would be really nice: a lot of people who I've showed the app to are quite amazed when I tell them its Java and not an embedded web app.
关于css - 使用 JavaFX Bootstrap ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21268062/
我有一个名为 main.css 的 css 文件和另一个名为 style.css 的文件。我怎样才能在 main.css 中做到这一点? .someClass { //apply rules to
在更新我的 css 之前,我在 Login.css 中有以下内容: body { background-image: url('./pictures/fond.png'); bac
我的 share point 2013 核心 css 和我的 css 之间存在 css 冲突。所以我想把我所有的类都放在 div #s4-workspace 下但是我搜索了一种方法来将所有类分组到这个
我知道您可以覆盖 jsp 页面从 jsp 包含 CSS 文件(即全局 CSS 文件)继承的 CSS 属性。 但是,如果元素中的某个属性弄乱了特定页面,而我不想只使用内联 CSS 在该页面中使用它怎么办
我刚刚发现了 initial-scale 元属性。 以前,我一直在使用 default.css 来定义我所有的样式和大小(用于字体和元素),以便它们在桌面计算机的屏幕上显示得很好。然后,如果您使用的是
我正在尝试使用 LESS CSS 来编写我的 CSS。我已经按顺序导入了 style.less 和 less.js 文件。 现在我想提取 LESS 生成的 CSS。有什么办法可以做到吗?我不想使用脚本
我想知道是否有任何一种软件可以读取大量内联样式中的 HTML 文档并将所有这些样式转换为外部 css 文件。如果只有一页,我可以手动完成。但是有100页。有人有想法吗? 最佳答案 就像有人说的那样,“
当我想从 Styled Components 迁移到 CSS Modules 时,出现了以下问题。 假设我有以下样式组件,它接受动态参数 offset和一个动态 CSS 字符串 theme : con
有没有办法将 CSS 类定义为与另一个类相等?例如,如果我有一个类: .myClass{ background-color: blue; } 有没有一种方法可以将第二个类定义为与 myClas
我正在尝试制作一组按钮,这些按钮贴在页面底部并且由固定的空间隔开。我正在使用 angularJS 的 ng-repeat 指令通过 ajax 请求获取数据,然后我用它来显示按钮。 我的问题在于让按
浏览器是否在加载 CSS 文件时解析 CSS?还是在整个 CSS 文件被浏览器下载后才进行解析?不同浏览器的做法有区别吗?我在哪里可以找到这种底层信息? 这个问题不是 Load and executi
这个问题在这里已经有了答案: Can a CSS class inherit one or more other classes? (29 个答案) 关闭 3 年前。 标题有点乱,我给大家看一下。假
我遇到了最奇怪的问题...... 在最简单的形式中,我有一个包含以下内容的 index.html 文件: (在尝试确定根本原因的过程中,我已经大大减少了它) 当我查看页面的源代码时,我得到以下信息:
我正在使用 Mindscape Workbench 来最小化我的 scss 文件。我的页面设置为使用 *.min.css 文件。在随机时间,min 文件不会与系统的其余部分一起发布。 我有很多 css
请告诉我 CSS 框架和 CSS 网格之间的区别。 最佳答案 CSS 框架也可以是 CSS 网格框架。 CSS 网格框架用于构建 CSS 布局。有一些框架除了构建布局还有其他用途,例如 Hartija
我有无法从页面中删除或更改的 original.css 文件。原始.css table { border-collapse: collapse; border-spacing: 0;
我以前使用 bootstrap css import 很好。 但是我正在尝试使用 CSS 模块,所以我添加了几行。 { test: /\.css$/, use:
有没有办法在 css 选择器中创建一个 css 组。 例如: .SectionHeader { include: .foo; include: .bar; include: .
今天我学习了 CSS 中的两个概念,一个是 CSS 定位(静态、相对、绝对、固定),另一个是 CSS Margin,它定义了元素之间的空间。 假设我想移动一个元素,这是最好的方法吗?因为这两个概念似乎
var paths = { css: './public/apps/user/**/*.css' } var dest = { css: './public/apps/user/css/' } /
我是一名优秀的程序员,十分优秀!