将javafx属性的值保持在特定范围内的最佳方法是什么?
(或者 - 这是一种不好的做法,是否有任何理由永远不会过滤由javafx属性包装的值?)
示例1:避免IntegerProperty中的负值示例2:将IntegerProperty
的值保持在List的范围内
第一个想法: - 覆盖IntegerPropertyBase.set(int)
.它是安全的?实际上setValue(int)
只是调用set(int)
,但是 - 如果这个实现有一天发生变化 - 对值集的控制就会丢失.
第二个想法: - 覆盖IntegerPropertyBase.invalidate()
.但此时已经设定了价值.
它是否更适合javafx属性抛出IllegalArgumentException
(或者ArrayIndexOutOfBoundsException
,如果包装的值是数组的索引),或者更好地拒绝超出边界的值,设置边界中的最后一个值?
也许是这样的:
class BoundedIntegerProperty extends IntegerPropertyBase {
(...)
int oldValue = defaultValueInBounds;
boolean settingOldValue = false;
public void invalidated() {
if(!settingOldValue){
if(outOfBounds(get())){
settingOldValue = true;
set(oldValue);
} else {
oldValue = get();
}
} else
settingOldValue = false;
}
}
Run Code Online (Sandbox Code Playgroud)
只有在invalidated()中抛出一个Exception,才能使超出范围的值保持属性的值超出范围.
我是否忽略了为过滤值提供的javafx属性中的任何内容?
(如果有必要,请帮助我改进本文中可能不好的英文...)
正如标题所说,我需要制作一个细长的进度条。我用过这个:
progressBar.setMaxHeight(0.1);
progressBar.setPrefHeight(0.1);
Run Code Online (Sandbox Code Playgroud)
但这不起作用。有没有人有想法?
我有 3D 场景,并且场景内有一个窗格,该窗格具有 x 轴旋转变换,我想使用此窗格作为战略游戏板,但我有问题。
当我在窗格中输入鼠标时,它给出了错误的光标位置。
例如,当我从窗格(带黑色边框的旋转窗格)内的左上角(红色圆圈)输入鼠标时,它应该显示(0,0)作为窗格内的光标位置,但它显示类似(200,400)的内容。
我怎么解决这个问题?
或者换句话说,如何获取节点上相对于节点及其变换的鼠标坐标?
这是一个例子:
import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Rectangle;
import javafx.scene.transform.RotateBuilder;
import javafx.stage.Stage;
public class JFXRotationXOrds extends Application{
@Override
public void start(Stage primaryStage) throws Exception {
VBox root = new VBox();
root.getChildren().add(new Rectangle(20, 20, Color.BLUE));
root.getChildren().add(new Circle(20, Color.RED));
//root.rotateProperty().set(30);
root.getTransforms().add(RotateBuilder.create().angle(-30).pivotX(0).pivotY(100).axis(new Point3D(1, 0, 0)).build());
root.setStyle("-fx-border-color: black; -fx-border-width:5; ");
root.setOnMouseMoved(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent arg0) {
if(arg0.getEventType() == MouseEvent.MOUSE_MOVED){
System.out.println(arg0.getX() + "," + …
Run Code Online (Sandbox Code Playgroud) 我很抱歉,如果这听起来像一个愚蠢的问题,但我在JOptionPane的自定义按钮上到处搜索.我遇到了如何实现特殊按钮,但我似乎无法在我的程序中使用它.
int choice;
Object[] doors = { "Door 1", "Door 2", "Door 3" };
JFrame frame = new JFrame();
input = "Which door do you choose?";
choice = JOptionPane.showOptionDialog(frame, input,
"Doors",
JOptionPane.DEFAULT_OPTION,
JOptionPane.QUESTION_MESSAGE,
null,
doors,
doors[2]);
if (car == 1 && choice.equals(doors[0])) {
open = 3; option = 2;
}
if (car == 1 && choice.equals(doors[1])) {
open = 3; option = 1;
}
if (car == 1 && choice.equals(doors[2])) {
open = 2; option = 1;
}
if (car …
Run Code Online (Sandbox Code Playgroud) 有人知道,是否可以在JavaFX ScatterChart
对象中隐藏轴?或者任何人都可以想到一个简单的解决方法?我没有在ScatterChart对象的文档中找到与此问题相关的任何内容.
不幸的是,它们在各种图形中都有点刺激性,其中轴的值本身不具有信息性(例如距离配置).
注意:遗憾的是,将scale的visibility属性设置为false的最简单的解决方案并没有产生我所渴望的结果(实际上它根本没有显示任何效果).
如何创建这样的工具栏:
链接:http://s14.postimg.org/99095jk3l/image.png
我已经创建了一个具有正确背景的工具栏.我唯一的问题是按钮.我不知道如何设置按钮的样式是透明的,以及如何在悬停和点击效果上添加正确的以匹配背景.
提前致谢