Я создаю редактор уровней для моего проекта, поэтому я добавил JPanel для JScrollPane, чтобы просмотреть уровень, над которым работает. Идея заключалась в том, что если бы уровень был слишком велик, то панель прокрутки справится с этим. Проблема в том, когда уровень мал, когда я пытаюсь изменить размер панели до размера, меньшего, чем прокрутка, он растягивается, чтобы заполнить всю область прокрутки, а не размер, который я установил. Кажется, я не могу найти решение проблемы.JPanel заполняет весь JScrollPane
EDIT: Я добавил пример кода. Когда окно увеличено, панель растягивается, чтобы соответствовать прокрутке, вместо того, чтобы оставаться в наборе 500 на 500 в примере.
Настройка JScrollPane:
public class Example {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(600, 600);
LevelView levelView = new LevelView();
JScrollPane pane = new JScrollPane(levelView);
frame.add(pane, BorderLayout.CENTER);
frame.setVisible(true);
}
}
JPanel:
public class LevelView extends JPanel {
private static final long serialVersionUID = 1L;
public LevelView() {
Dimension dim = new Dimension(500, 500);
setPreferredSize(dim);
setMaximumSize(dim);
setMinimumSize(dim);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
System.out.println(getWidth() + " " + getHeight());
g.setColor(Color.BLACK);
g.fillRect(0, 0, getWidth(), getHeight());
// Draw grid
g.setColor(Color.WHITE);
for (int x = 0; x < getWidth(); x += 50) {
g.drawLine(x, 0, x, getHeight());
}
for (int y = 0; y < getHeight(); y += 50) {
g.drawLine(0, y, getWidth(), y);
}
}
}
Спасибо заранее!
FIrst: [? Должен ли я отказаться от использования набора (Preferred | Максимум | Минимум) методы Размер в Java Swing] (http://stackoverflow.com/questions/7229226/should-i-avoid -The использование-оф-setpreferredmaximumminimumsize-методов-в-Java-SWI); Во-вторых: подумайте о предоставлении [runnable example] (https://stackoverflow.com/help/mcve), который демонстрирует вашу проблему. Это не дамп кода, а пример того, что вы делаете, что подчеркивает проблему, с которой вы сталкиваетесь. Это приведет к меньшему путанице и лучшим ответам – MadProgrammer
Благодарим вас за совет, я обновил его с дополнительной информацией. Определенно лучше практиковать не жесткие коды в размерах пикселей, но я не вижу лучшего способа сделать это. – ColonelChip