2015-03-21 1 views
0

В настоящее время я работаю над проектом, который опирается на представление размеров файлов через прямоугольники. То, что я застрял в течение довольно долгого времени, было масштабирование высоты до размера, который мог бы вписаться в мою сцену. Это ключевая часть проекта, так как позволяет пользователю визуально сравнивать размеры файлов, которые они просматривают, из любого каталога на своем компьютере. EDIT: Я пытался добавить изображение, но я не получил достаточно репутацию еще :( http://tinypic.com/r/2e56pol/8Уменьшение высоты прямоугольника для установки в окне в javafx

+0

вы можете определить коэффициент масштабирования, зная максимальную высоту ваших прямоугольников и высоту окна (MaxHeight/viewHeight), вы можете затем множественные текущая высоту ваших прямоугольников это фактор для получения равномерного масштабирования. Вы также можете визуализировать прямоугольники изображения, а затем масштабировать Мага в целом. Но идея остается той же ... – MadProgrammer

+0

, поэтому мне нужно найти наибольшую высоту всех прямоугольников? –

+0

Еще одна идея - нормализовать высоты, так что высотный прямоугольник будет иметь коэффициент 1 и наименьший 0. Это позволит вам отображать прямоугольники, не заботясь о том, чтобы всегда рассчитывать масштаб (поскольку нормализованные значения уже масштабируется) – MadProgrammer

ответ

0

Почему вы не просто связать высоту прямоугольника с помощью сцены:.

rectangle.heightProperty().bind(scene.heightProperty()); 

полный пример:

import javafx.application.Application; 
import javafx.scene.Scene; 
import javafx.scene.layout.HBox; 
import javafx.scene.paint.Color; 
import javafx.scene.shape.Rectangle; 
import javafx.stage.Stage; 

public class DemoTabPane extends Application { 

    @Override 
    public void start(Stage primaryStage) throws Exception { 
     Rectangle rectangle = new Rectangle(20,20,200,200); 
     rectangle.setStroke(Color.BLACK); 
     Scene scene = new Scene(new HBox(rectangle), 100, 100); 
     rectangle.heightProperty().bind(scene.heightProperty()); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 

    public static void main(String[] args) { 
     launch(args); 
    } 
} 
+0

Я не совсем понимаю, код. Не могли бы вы объяснить это? Я имею в виду привязку ширины, особенно. –

+0

Связывание помогает связать высоту вашего прямоугольника относительно высоты сцены/сцены. В моем примере коэффициент составляет 100%, т. Е. Независимо от того, насколько большой или малый ваш уровень, прямоугольник полностью заполнит высоту. – ItachiUchiha

+0

Обязательно ли я связывать его до или после внесения изменений для заполнения, угла поворота ... и т. Д.? –