我试图在菜单按钮中更改样式.我可以更改菜单按钮样式,但不能更改其菜单项.无论我尝试菜单按钮内的菜单项保持不变.
.menu-button {
-fx-background-color:black;
}
.menu-button .label {
-fx-background-color:black; }
Run Code Online (Sandbox Code Playgroud)

现在我怎么能改变遗漏的颜色?
我想有一个应用程序,我完全自定义窗口的外观.到目前为止,我已经了解到我可以删除典型的窗口内容:
class Application extends javafx.application.Application {
/**
* Starts the application.
*
* @param stage
*/
override def start(stage: Stage) {
stage.initStyle(StageStyle.TRANSPARENT)
// Load the main window view.
val loader = new FXMLLoader()
loader.setLocation(getClass.getResource("/com/myproj/application/MainWindow.fxml"))
val root = loader.load().asInstanceOf[Parent]
val scene: Scene = new Scene(root, Color.TRANSPARENT)
stage.setScene(scene)
stage.show()
}
}
Run Code Online (Sandbox Code Playgroud)
其他一切工作正常,除了窗口拖动,双击 - 最大化,在Windows上拖动到屏幕顶边应该激活最大化等等.本机窗口功能完全缺失.
我可以在某种程度上轻松地自定义窗口的整个显示而不会丢失所有这些不错的功能.
我说的是类似Adobe Photoshop的东西,看起来完全不同但仍保留这些功能(或手动在UI上实现它们).
如果我至少可以为初学者实现拖动+窗口按钮,那将是一个开始.我在这里瞄准Linux,Mac和Windows.
我在javafx2中创建了treeview.我需要编写事件来获取点击的节点名称.
请告诉我怎么做?
我有一个简单的控制台应用程序,有时需要执行图形操作,对于那些我正在使用JavaFx框架(我需要一些函数,如文本的CSS样式)我只是生成一些形状和文本到一个隐藏的场景然后保存那些存档的,就是这样,
我知道要使用JavaFx我必须将图形操作传递给JavaFx线程,但是当一切都完成后我必须关闭应用程序(几个小时后),这个JavaFx线程仍然保持打开状态......我真的不会想要强制退出System.exit(),因为如果有什么东西被阻止我可能想知道/等待(我也不想将所有内容都作为JavaFx应用程序执行(因为JavaFx组件不到我主应用程序的1%)
代码非常简单,谷歌搜索我发现只使用
Platform.exit();
Run Code Online (Sandbox Code Playgroud)
这似乎不起作用,我也试过玩平台参数,如
Platform.setImplicitExit(false);
Run Code Online (Sandbox Code Playgroud)
这是我可以运行的测试应用程序:
import javafx.application.Platform;
import javafx.embed.swing.JFXPanel;
import javafx.geometry.Pos;
import javafx.scene.layout.VBox;
public class SOTestFX {
public static void main(String[] args) {
SOTestFX t = new SOTestFX();
t.runFxThread();
}
public void runFxThread(){
//Application.launch(args);
final JFXPanel jfxPanel = new JFXPanel();
Platform.runLater(new Runnable() {
@Override
public void run() {
System.err.println("CREATING IMAGE");
simpleFXoperations();
System.err.println("NOW CALL EXIT");
System.err.println("JAVA FX THREAD SHOULD BE EXITED NOW");
Platform.exit();
}
});
try {
Thread.sleep(3000); // just wait a bit if something should happen, let it …Run Code Online (Sandbox Code Playgroud) 我想在我的Controller班级中定义的按钮中添加一个方法
在控制台中只是一个错误,告诉我它找不到该方法
这是代码
sample.fxml
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<AnchorPane id="AnchorPane" prefHeight="200" prefWidth="320" xmlns:fx="http://javafx.com/fxml" fx:controller="sample.Controller">
<children>
<Button layoutX="126" layoutY="90" text="lololol" onAction="#test" fx:id="button" />
</children>
</AnchorPane>
Run Code Online (Sandbox Code Playgroud)
和Controller.java
package sample;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import java.awt.event.ActionEvent;
import java.net.URL;
import java.util.ResourceBundle;
public class Controller implements Initializable
{
@Override
public void initialize(URL url, ResourceBundle resourceBundle)
{
}
@FXML
private void test(ActionEvent event)
{
System.out.println("lollolol");
}
}
Run Code Online (Sandbox Code Playgroud) 我创建了一个JavaFX项目,并为java Scene Builder中的第一个登录框架创建了GUI.登录成功后,必须关闭登录框,并且必须显示下一帧(主程序框).我可以使新框架出现,但我无法关闭登录框架.我尝试了类似dispose()但没什么用的东西.下面是主类的代码:
public class KuberComm extends Application {
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));
Scene scene = new Scene(root);
stage.setResizable(false);
stage.setTitle("Login to KuberComm");
stage.setScene(scene);
stage.show();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
}
Run Code Online (Sandbox Code Playgroud)
登录按钮的处理程序位于另一个类(NetBeans IDE生成的控制器类)中.我无法弄清楚框架的名称是什么,以便在控制器类中使用它.
任何帮助都感激不尽!
我很难将文本放在HBox中.我能够设置文本的水平对齐,但我无法设置文本的垂直对齐.我试图在Hbox的垂直中心设置文本,但它出现在顶部.
任何帮助将非常感激.
// Create The Updates Progress Bar At The Bottom Of The Window
HBox checkUpdatesBar = new HBox();
checkUpdatesBar.setId("checkUpdatesBar");
checkUpdatesBar.setPrefSize(CHECK_PANE_WIDTH, CHECK_PANE_HEIGHT);
checkUpdatesBar.setMinSize(CHECK_PANE_WIDTH, CHECK_PANE_HEIGHT);
checkUpdatesBar.setMaxSize(CHECK_PANE_WIDTH, CHECK_PANE_HEIGHT);
// Create The 'Check For Updates...' Text
Text checkForUpdates = new Text();
checkForUpdates.setFont(Font.font("Arial Black", FontWeight.BLACK, 15));
checkForUpdates.setWrappingWidth(CHECK_PANE_WIDTH / 2.8);
checkForUpdates.setFill(Color.WHITE);
checkForUpdates.setTextAlignment(TextAlignment.CENTER);
checkForUpdates.setText("Checking For Updates ...".toUpperCase());
checkUpdatesBar.getChildren().add(checkForUpdates);
Run Code Online (Sandbox Code Playgroud)
我的代码生成以下内容:http://puu.sh/ccEkp/41a26038a4.png
我喜欢我的水平定位.我知道它不在中间,因为我将它设置为那样.但是,我只关心垂直定位.
我分别尝试了以下内容:
checkForUpdates.setLayoutY(20);
checkForUpdates.setY(20);
Run Code Online (Sandbox Code Playgroud)
我选择数字20是因为我想将文本从HBox顶部向下移动20个像素.我在Photoshop中计算了这个值.虽然如果有更好的方法将文本设置为HBox的垂直中心,请赐教.
再次感谢您的帮助!
我有一个未修饰的JavaFX Stage,以及我自己的最小化,最大化和关闭按钮.但遗憾的是,与装饰行为相比,单击Windows 7中的任务栏图标不会自动最小化舞台.
有没有办法通过单击任务栏图标来最小化纯Java代码的未修饰阶段?如果不是,我怎么能用JNA做到这一点?
编辑: 好的,我一直试图用JNA来解决这个问题,但是在C/C++/JNA旁边做了很多,我设置它有点麻烦.如果有人帮我把各个部分放在一起,我将不胜感激.
到目前为止,这是我的代码:
public final class Utils {
static {
if (PlatformUtil.isWin7OrLater()) {
Native.register("shell32");
Native.register("user32");
}
}
// Apparently, this is the event I am after
public static final int WM_ACTIVATEAPP = 0x1C;
public static void registerMinimizeHandler(Stage stage) {
// Hacky way to get a pointer to JavaFX Window
Pointer pointer = getWindowPointer(stage);
WinDef.HWND hwnd = new WinDef.HWND(pointer);
// Here's my minimize/activate handler
WinUser.WindowProc windowProc = new MinimizeHandler(stage);
Pointer magicPointer = ... set this to point …Run Code Online (Sandbox Code Playgroud) 我可能会遗漏一些非常明显的东西,但我无法找到如何为Dialog组件设置Icon(更准确的是ProgressDialog).我知道如何为舞台做这件事,__CODE__但我没有为Dialog家族找到任何东西.不知何故,设置舞台图标不会影响对话框图标.
谢谢