有许多方法可以将窗格或背景场景的背景设置为透明.
e.g http://stackoverflow.com/questions/12717487/how-to-implement-a-transparent-pane-with-non-transparent-children
Run Code Online (Sandbox Code Playgroud)
但是,如果我有一个基于fxml和基于控制器的文件的应用程序,我怎么能这样做?
当我已经在基于fxml的文件中创建了一个应用程序,并且布局在基础上有一个AnchorPane,而在它上面有一些其他窗格.我如何实际将白色背景变为透明或半透明?
好的,我已经创建了自己的客户标签,对于这个示例,它非常基础。我所做的是在名为 MyLabel 的自定义类中扩展 Javafx Label。我还使用 FXML 来创建 GUI。现在,当我这样做时,由于出现此错误,我似乎无法使用自定义类进行实例化。
"Can not set net.blacksquirreldevs.tests.MyLabel field net.blacksquirreldevs.tests.SampleLabelController.sampleLabel to javafx.scene.control.Label"
Run Code Online (Sandbox Code Playgroud)
这是所有内容的代码
主程序
package net.blacksquirreldevs.tests;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("SampleLabel");
AnchorPane anchorPane = (AnchorPane) FXMLLoader.load(getClass().getResource("SampleLabel.fxml"));
primaryStage.setScene(new Scene(anchorPane));
primaryStage.show();
}
public static void main(String... args) {
launch(args);
}
}
Run Code Online (Sandbox Code Playgroud)
我的标签
package net.blacksquirreldevs.tests;
import javafx.scene.control.Label;
public class MyLabel extends Label {
public MyLabel(String text) {
super();
setText(text); …Run Code Online (Sandbox Code Playgroud) 我有一个使用fxml和JavaFX Scene Builder 1.1的JavaFX应用程序.当我在Netbeans中编译项目时,它会为项目中包含的每个jar文件发出警告,这使得编译需要更多时间.例如:
Warning:
The signer certificate will expire within six months.
Enter Passphrase for keystore: Enter key password for nb-jfx:
Signing JAR: E:\Project\Client\Development\Mednet\dist\lib\activation.jar to E:\Project\Client\Development\Mednet\dist\lib\activation.jar as nb-jfx
Warning:
The signer certificate will expire within six months.
Enter Passphrase for keystore: Enter key password for nb-jfx:
Signing JAR: E:\Project\Client\Development\Mednet\dist\lib\antlr-2.7.7.jar to E:\Project\Client\Development\Mednet\dist\lib\antlr-2.7.7.jar as nb-jfx
Warning:
The signer certificate will expire within six months.
Enter Passphrase for keystore: Enter key password for nb-jfx:
Signing JAR: E:\Project\Client\Development\Mednet\dist\lib\asm-3.1.jar to E:\Project\Client\Development\Mednet\dist\lib\asm-3.1.jar as nb-jfx
Warning: …Run Code Online (Sandbox Code Playgroud) 我的 FXML 注入有问题。据我所知,我已经设置了我的程序,但似乎我遗漏了一些东西。我的代码如下:
主要的:
package application;
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
try {
FXMLLoader loader = new FXMLLoader(getClass().getResource("NoteKeeper.fxml"));
BorderPane root = (BorderPane)loader.load();
Scene scene = new Scene(root,root.getHeight(),root.getWidth());
scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
Run Code Online (Sandbox Code Playgroud)
控制器:
package application;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.ScrollPane; …Run Code Online (Sandbox Code Playgroud) 我FXML在一个主FXML视图中包含了几个s,但问题是当我更改父AnchorPane视图的高度时,包含的视图高度不会改变,而且我在文档中没有找到任何关于包含的大小的内容FXML。有人知道吗?
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="100.0" SplitPane.resizableWithParent="false">
<children>
<fx:include fx:id="child" source="child.fxml" />
</children>
</AnchorPane>
Run Code Online (Sandbox Code Playgroud) 在控制器(或者可能是主文件或其他文件,我不确定这一切是如何工作的)中,我们有以下内容:
String foo = "Foo.";
Run Code Online (Sandbox Code Playgroud)
在 Scene Bilder 生成的 FXML 中,是这样的:
<Button mnemonicParsing="false" prefHeight="25.0" prefWidth="61.0" text="Browse" />
Run Code Online (Sandbox Code Playgroud)
如何使 foo 的值显示为按钮上的文本?我应该在哪里存储它,控制器还是其他地方?我仍然对 Main 文件、控制器和 FXML 文件如何准确组合在一起感到困惑。
是否可以在FXML中调整TableView的大小,其中每列的相对大小调整?我知道在代码中这是可能的,但我特意寻找FXML方法.
这是目前的做法:
<BorderPane xmlns:fx="http://javafx.com/fxml">
<fx:define>
<Double fx:id="tableViewWidth" fx:value="600"/>
</fx:define>
<center>
<TableView fx:id="expensesTableView" editable="true" prefWidth="${tableViewWidth}">
<columnResizePolicy>
<TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
</columnResizePolicy>
<columns>
<TableColumn text="Title" prefWidth="${tableViewWidth * 3}">
<cellValueFactory>
<PropertyValueFactory property="title" />
</cellValueFactory>
</TableColumn>
<TableColumn text="Category" prefWidth="${tableViewWidth * 3}">
<cellValueFactory>
<PropertyValueFactory property="category" />
</cellValueFactory>
</TableColumn>
<TableColumn text="Period" prefWidth="${tableViewWidth * 2}">
<cellValueFactory>
<PropertyValueFactory property="period" />
</cellValueFactory>
</TableColumn>
<TableColumn text="Value" prefWidth="${tableViewWidth * 2}">
<cellValueFactory>
<PropertyValueFactory property="value" />
</cellValueFactory>
</TableColumn>
</columns>
</TableView>
</center>
</BorderPane>
Run Code Online (Sandbox Code Playgroud)
乘法部分似乎不起作用.
使用JavaFX和Scene Builder,我试图从控制器访问Label内的文本.
我在控制器中初始化了一个标签:
@FXML
private Label label1;
Run Code Online (Sandbox Code Playgroud)
以下代码位于fxml文件中:
<Label fx:id="lable1" onMouseClicked="#handleLabel" text="Label 1" />
Run Code Online (Sandbox Code Playgroud)
我已使用场景构建器将标签绑定到控制器中的此函数:
private void handleLabel(MouseEvent event) {
// get text from label n
}
Run Code Online (Sandbox Code Playgroud)
我的想法就是打电话label1.getText().但是为此,我需要获得标签的fx:id,因为我会有很多标签,所以我不能单独硬编码所有的id.
在JavaFX控制器中获取被点击对象的id的更好方法 我已经找到了这个,但我不认为这个答案对我有用,因为初始化标签和设置id似乎不适合@FXML.此外,尚未回答是否可以访问组件的fx:id.
任何其他方式如何访问Label对象的方法getText()也是受欢迎的.
我遇到了 IntelliJ 的问题。每次我保存对我正在编辑的某些 FXML 的更改时,这些更改都会在执行程序时删除。
比如我把上面的50.0改成160.0,运行程序后代码又变回50.0。我还附上了一张项目浏览器的图片,因为它可能暗示了 Verison Control 的一些东西。
显然有些颜色不正常。我从共享 GitHub 存储库的 Gradle 中导入了该项目。谢谢!
我正在尝试向 ImageView 添加多个效果(超过 2 个)。2 效果没有问题:effect1.setInput(Effect effect2) and imageView.setEffect(effect1)
但是我怎样才能用 3 个或更多的效果来做到这一点?
先感谢您!
fxml ×10
javafx ×8
java ×7
javafx-8 ×3
javafx-2 ×2
controller ×1
imageview ×1
scene ×1
scenebuilder ×1
stage ×1