У меня есть проект, где я всегда хочу сосредоточить сосредоточенный JPanel. Поэтому я подумал, что могу просто изменить позицию Viewport. Но я не могу использовать окно просмотра. Я создал пример проекта, чтобы показать, как я использую viewport. Я просто хочу, чтобы пользователь видел только один из оранжевых ящиков. Но также необходимо просмотреть все ящики одновременно. Таким образом, представление должно увеличиться или что-то вроде этого. Как я могу исправить эту проблему? Мой пример:Всегда центрируйте сфокусированный JPanel
import javax.swing.*;
import java.awt.*;
public class main {
public static void main(String [] args){
//create JFrame
JFrame _frame = new JFrame();
//create Viewport
JViewport _view = new JViewport();
//create Mainpanel
JPanel _mainPanel = new JPanel();
//tell the view to handle mainpanel
_view.setView(_mainPanel);
//create Layout
GridLayout _layout = new GridLayout(3,3,3,3);
//set gridlayout to mainpanel
_mainPanel.setLayout(_layout);
for(int i = 0;i<12;i++){
JPanel _tempPanel = new JPanel();
_tempPanel.setBackground(Color.ORANGE);
_tempPanel.setBorder(BorderFactory.createLineBorder(Color.black));
_mainPanel.add(_tempPanel);
}
_view.setExtentSize(new Dimension(300,300));
//add mainpanel to frame
_frame.add(_mainPanel);
_frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
_frame.pack();
//set size of Jframe
_frame.setSize(1000,1000);
_frame.setVisible(true);
}
}
почему не используется [CardLayout] (https://docs.oracle.com/javase/tutorial/uiswing/layout/card.html) – guleryuz
@guleryuz эй, потому что я хочу, чтобы иметь возможность просматривать все JPanels в однажды – ReasyEasyPeasy
«Я просто хочу, чтобы пользователь видел только один из оранжевых ящиков», вы говорите в своем вопросе – guleryuz