Как часть приложения, которое я пишу, мне нужно смешать старый (тяжеловесный) Canvas с компонентами Swing - специально вложив их в JSplitPane. Однако, когда я делаю это, разделитель отказывается изменить размер где-либо, как будто ни один холст не примет уменьшение размера. Код, демонстрирующий проблему, выглядит следующим образом:
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, которая работает, но нет тяжелой реализации, и я был бы удивлен, если бы облегченная избежала проблемы.