В моем коде я есть:Как нарисовать белый прямоугольник внизу JComponent?
графический интерфейс с JScrolledPane
, содержащий вставку, которая содержит некоторые JPanel
(они могут быть рефакторинг, как JComponent
в случае необходимости).
См Изображение 1:
Я пытаюсь:
Найти лучший способ, чтобы добавить пустое пространство между ними.
Я попытался использовать Box.createVerticalStruct, но это усложняет управление. Я не хочу добавлять новую белую панель к моему объекту, представляющую цветную панель, так что я искал ее, и мне кажется, что есть и другие 2 способа: использование вставки или переопределение метода рисования.
Как вы считаете, лучший способ в моем случае? , если вы предложите использовать метод paintComponent, как получить нижнее угловое положение, чтобы нарисовать белый прямоугольник определенной высоты?
Окончательные результаты должны быть что-то вроде этого:
Вот код, вы можете использовать, чтобы сделать некоторые попробовать (что было написано на цели, так что не слишком много заботы о хорошие методы письма):
public class TheMotherPuckerGlue2 {
public static void main(String [] a) {
final JFrame frame = new JFrame();
frame.setSize(500, 500);
frame.setTitle("myCode");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
JScrollPane myPane = new JScrollPane();
myPane.setPreferredSize(new Dimension(350,200));
myPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
JPanel viewPort = new JPanel(new BorderLayout());
viewPort.setBackground(Color.WHITE);
Box myBox = Box.createVerticalBox();
myBox.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3));
viewPort.add(myBox,BorderLayout.PAGE_START);
class ColoredPanel extends JPanel{
public ColoredPanel(Color aColor){
super.setBackground(aColor);
super.setPreferredSize(new Dimension(100,60));
}
}
ColoredPanel panel1 = new ColoredPanel(Color.green);
ColoredPanel panel2 = new ColoredPanel(Color.yellow);
ColoredPanel panel3 = new ColoredPanel(Color.red);
myBox.add(panel1);
myBox.add(panel2);
myBox.add(panel3);
viewPort.add(myBox,BorderLayout.PAGE_START);
myPane.setViewportView(viewPort);
frame.add(myPane);
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
frame.setVisible(true);
}
});
}
}
Благодарности
* "найти лучший способ для объявления d пробел между ними. Я пробовал использовать «Box.createVerticalStruct», но это усложняет управление. "* Используйте один столбец' GridLayout' с ** layout padding ** (посмотрите на его конструкторы). Установите цвет BG панели 'GridLayout' на' WHITE'. –
Я не упоминал, что цветные панели показанный может содержать компоненты. Как вы думаете, он может быть другим? Тем временем я проверяю Java-учебник GridLayout – Koop4