Java 更改图像宽度的滚动条
我要去学校学习java编程。我收到一个程序,其中我必须使用滚动条来更改imageView的宽度。我的问题是,在JavaFX中使用scrollbar API是否可能 好的,这是我的密码Java 更改图像宽度的滚动条,java,image,javafx,width,scrollbar,Java,Image,Javafx,Width,Scrollbar,我要去学校学习java编程。我收到一个程序,其中我必须使用滚动条来更改imageView的宽度。我的问题是,在JavaFX中使用scrollbar API是否可能 好的,这是我的密码 sb = new ScrollBar(); sb.setMax(100); sb.setMin(0); lastValue = 500; sb.setValue(lastValue); sb.setUnitIncrement(1); sb.blockIncr
sb = new ScrollBar();
sb.setMax(100);
sb.setMin(0);
lastValue = 500;
sb.setValue(lastValue);
sb.setUnitIncrement(1);
sb.blockIncrementProperty();
sb.setOnScroll(e -> FacePart.getPart().scrollAction(lastValue));
这就是我的问题所在。在该代码所在的类和另一个类中的方法之间来回通信。
这是另一个类中的方法
其他方法
@Override
public void scrollAction(double j) {
/*Global variable*/ lastScrollValue = j;
iv.setFitWidth(300 + 2 * lastScrollValue);
}
这可以完成,但不应该使用
onScroll
事件完成
将以下内容添加到列表中:
或者简单地使用绑定:
iv.fitWidthProperty().bind(sb.valueProperty().multiply(2).add(300));
至少我想这是你想做的。我不知道你为什么要在那里用“全球”这个词
此外:
sb.blockIncrementProperty();
这实际上是一个NOP如果需要设置(或获取)值,则应使用提供的setter(或getter)进行设置:
通过属性执行此操作的可读性较低,并且执行相同的操作
通常你会使用a来完成这个任务(因为句柄大小在这种情况下似乎没有意义)。我同意Fabian的观点,在这个任务中使用a,而不是a。滑块是更合适的控件
不知道JavaFXAPI,我也帮不上忙——但发布代码说明您已经尝试了哪些步骤,以及为什么它们不适合您,可能会对您有所帮助。这很好,还是您需要这两个类的所有代码?不幸的是,我对这类内容不太熟悉,但是额外的信息会帮助其他人。谢谢大家,我很感激滑块的帮助;这正是我所需要的。我是个新手,我能做些什么来给你一个荣誉吗。
sb.blockIncrementProperty();
sb.setBlockIncrement(someValue);
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Slider;
import javafx.scene.image.*;
import javafx.scene.layout.*;
import javafx.stage.Stage;
public class SmurfObesityMeter extends Application {
private static final double DEFAULT_SIZE = 128;
private static final double MIN_WIDTH = DEFAULT_SIZE / 2;
private static final double MAX_WIDTH = DEFAULT_SIZE * 2;
@Override
public void start(final Stage stage) throws Exception {
final Image image = new Image(IMAGE_LOC);
final ImageView imageView = new ImageView(image);
StackPane imagePane = new StackPane(imageView);
imagePane.setMinSize(StackPane.USE_PREF_SIZE, StackPane.USE_PREF_SIZE);
imagePane.setPrefSize(MAX_WIDTH, DEFAULT_SIZE);
imagePane.setMaxSize(StackPane.USE_PREF_SIZE, StackPane.USE_PREF_SIZE);
final Slider slider = new Slider(MIN_WIDTH, MAX_WIDTH, DEFAULT_SIZE);
imageView.fitWidthProperty().bind(slider.valueProperty());
final VBox layout = new VBox(10, imagePane, slider);
layout.setPadding(new Insets(10));
stage.setScene(new Scene(layout));
stage.show();
}
public static void main(String[] args) {
launch(args);
}
private static final String IMAGE_LOC =
"http://icons.iconarchive.com/icons/designbolts/smurfs-movie/128/smurfette-icon.png";
}