Как часть приложения, которое я пишу, мне нужно смешать старый (тяжеловесный) холст с компонентами качания - в частности, вложенность их внутри JSplitPane. Однако, когда я делаю это, делитель отказывается изменять размер в любом месте, как если бы ни холст не принял уменьшение размера. Код демонстрирует проблему таким образом:JSplitPane and Canvas
JFrame frame = new JFrame();
JSplitPane pane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, new Canvas(), new Canvas());
pane.setResizeWeight(0.5);
frame.add(pane);
frame.pack();
frame.setVisible(true);
Первоначально я предположил, что это простая вещь, чтобы решить, однако после того, как делать справедливое немного исследований варианты, кажется, представить себя как:
- Используйте JPanel вместо (не всегда вариант, как в моем случае, когда я использую vlcj для визуализации непосредственно на холсте)
- Вставьте х хитроумный хак, который может работать в некоторых случаях
Есть ли лучший способ сделать это? Или это просто случай использования хаков? Я обсуждал другие варианты, такие как альтернативная реализация SplitPane, которая работает, но нет никакой супертяжелой реализации, и я был бы удивлен, если бы облегченный вариант избежал проблемы.
Какую версию Java вы используете? Некоторые ведут себя лучше при смешивании тяжелых и легких весовых компонентов, чем другие. –
@Hovercraft Full Eels - Протестировано как с последними версиями Java 6, так и с Java 7 RC - оба дают тот же результат. – berry120