В настоящее время у меня есть JComponents, содержащиеся в JPanel с вертикальной компоновкой. Таким образом, я могу расположить первый компонент по центру, как показано ниже, а нижний компонент (который довольно длинный) расположить ниже. Однако, поскольку нижний компонент очень длинный, я хотел добавить ползунок только для этого конкретного компонента. Таким образом, пользователь может видеть весь нижний компонент, а верхний компонент остается в центре. Однако мой код ниже ничего не исправляет, и полоса прокрутки даже не работает. Единственная информация о GPComponent и GPinfinity, которую вам нужно знать, это то, что они переопределяют методы PreferredSize, MinimumSize, MaximumSize и paintComponent (они расширяют JComponent).
JFrame frame = new JFrame();
JPanel panel = new JPanel();
GPComponent gp = new GPComponent(n, k);
GPinfinityComponent gpi = new GPinfinityComponent(n, k);
Box box = new Box(BoxLayout.Y_AXIS);
panel.add(Box.createVerticalGlue());
panel.add(gp);
panel.add(Box.createVerticalGlue());
JScrollPane thePane = new JScrollPane(gpi, JScrollPane.VERTICAL_SCROLLBAR_NEVER,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
panel.add(thePane);
frame.pack();6
frame.add(panel, BorderLayout.CENTER); // just to be clear
frame.setVisible(true);
final int FRAME_WIDTH = 600;
final int FRAME_HEIGHT = 600;
frame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
frame.setTitle("GP("+n+", "+k+")");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
Также: максимальный размер=минимальный размер=предпочтительный размер для обоих компонентов. Для круглого компонента размеры (350, 350), а для другого - (5000, 150).
I have to JComponents contained in a JPanel with a vertical box layout.
не основано на опубликованном вами коде. Вы создаете Box, но затем добавляете все компоненты на панель, которая использует FlowLayout. Компоненты просто обертываются, поэтому создается впечатление, что вы используете Box. - person camickr   schedule 16.07.2014