小编Ron*_*ldo的帖子

JAVAFX如何使按钮堆叠在Label后面

如何使标签后面的按钮可以点击?

按键

Button btn = new Button();
//TODO: button's main function, like onPressed, onReleased etc. here...
Run Code Online (Sandbox Code Playgroud)

自定义标签

CustomLabel sp = new CustomLabel("Some texts here"));
//TODO: custom label's main function, like a translucent background etc here...
//main purpose of this is to overlay the button
Run Code Online (Sandbox Code Playgroud)

主要窗格

StackPane mainPane = new StackPane();
mainPane.getChildren.addAll(btn, sp);
Run Code Online (Sandbox Code Playgroud)

这样,自定义标签覆盖的区域变得不可点击.

有没有让按钮仍然可点击,即使覆盖,例如?或者还有另一种方法吗?有点像设置标签在点击时不可见?


编辑:回答Itamar Green的问题..

通过使用此链接中显示的示例:鼠标事件在基础层上被忽略,它似乎仍然无法正常工作.堆叠在图层下的按钮仍然无法点击.

sp.setPickOnBounds(false);
Run Code Online (Sandbox Code Playgroud)

java stack label javafx button

6
推荐指数
1
解决办法
1408
查看次数

如何将警报设置为始终放在最前面?

可以说我有一个简单的警报。

Alert a = new Alert(AlertType.NONE);

CustomLabel lbl = new CustomLabel("Testing");
CustomButton ok = new CustomButton("OK");
FlowPane fp = new FlowPane(); 
fp.getChildren().addAll(lbl,ok);

alert.getDialogPane().setContent(fp);
alert.initStyle(StageStyle.TRANSPARENT);
Run Code Online (Sandbox Code Playgroud)

然后,我希望此警报始终显示在我正在显示的任何屏幕上方,我该怎么做?

将主页设置为。

mainStage.setAlwaysOnTop(false); //does not work
Run Code Online (Sandbox Code Playgroud)

我的主警报和警报警报都在同一线程上。

意思是,在运行我的主程序时,它将检查某些内容,然后在某些内容不正确时弹出警报。

alert dialog javafx always-on-top

5
推荐指数
1
解决办法
2317
查看次数

如何将具有相同属性的对象合并到一个数组中?

我想将具有相同属性的 2 个对象合并到一个数组中。

以此为例:

object1 = {"id":1,
           "name":name1,
           "children":[{"id":2,"name":name2}]
          };
object2 = {"id":3,
           "name":name3,
           "children":[{"id":4,"name":name4}]
          };
object3 = {"id":1,
           "name":name1,
           "children":[{"id":6,"name":name6}]
          };
var result = Object.assign(result,object1,object2,object3);
Run Code Online (Sandbox Code Playgroud)

预期结果:

JSON.stringify([result]) =[
                           {"id":1,
                            "name":name1,
                            "children":[{"id":2,"name":name2},
                                       {"id":6,"name":name6}]
                           },
                           {"id":3,
                            "name":name3,
                            "children":[{"id":4,"name":name4}]
                           }
                          ]
Run Code Online (Sandbox Code Playgroud)

实际结果:

JSON.stringify([result]) = [
                            {"id":3,
                             "name":name3,
                             "children":[{"id":4,"name":name4}]
                            }
                           ]
Run Code Online (Sandbox Code Playgroud)

似乎 Object.assign() 不是要走的路......因为它会覆盖,我不希望它覆盖,我希望它们合并。有没有正确的方法来做到这一点?

javascript arrays tree recursion data-structures

4
推荐指数
1
解决办法
7055
查看次数

JAVA如何将JAVAFX的标签嵌入到JPanel中?

如何将使用JAVAFX创建的自定义标签嵌入到现有swing的JPanel中?

例如

自定义JavaFX标签:

public class CustomJavaFXLabel extends Label{
    public CustomJavaFXLabel(){
        super();    
        setFont("blah blah blah");
        setText("blah blah blah");
          /*
           *and so on...
           */
    }
}
Run Code Online (Sandbox Code Playgroud)

现有的JPanel在摇摆

public class SwingApp(){
    private JPanel jpanel;

    public SwingApp(){
        jpanel = new JPanel();
        jpanel.add(new CustomJavaFXLabel()); //this line does not work
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

The method add(Component) in the type Container is not applicable for argument (CustomJavaFXLabel)
Run Code Online (Sandbox Code Playgroud)

我理解为此,我最好使用JLabel来创建自定义标签.但是,由于某些限制,我需要使用FX作为自定义标签.

谢谢.

java swing label javafx jpanel

2
推荐指数
1
解决办法
752
查看次数