Рисование нескольких фигур на JPanel - PullRequest
3 голосов
/ 01 ноября 2011

Я прошу прощения, если в этом есть какой-то элемент двусмысленности, но я отчасти поражен библиотеками Java Swing / AWT (я ненавижу программирование GUI!).

По сути, я настроил очень простой JFrame с JPanel следующим образом:

public void drawGUI() {
    //Instantiate the JFrame.
    mainFrame = new JFrame("Ping Pong alpha1");
    mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    mainFrame.setLayout(new BorderLayout());

    //Instantiate & setup the JPanels.
    btnPan = new JPanel();
    canPan = new JPanel();
    canPan.setLayout(new BoxLayout(canPan, BoxLayout.PAGE_AXIS));
    statPan = new JPanel();
    statPan.setLayout(new BoxLayout(statPan, BoxLayout.PAGE_AXIS));

    //Add JPanels to mainFrame.
    mainFrame.add(btnPan, BorderLayout.PAGE_END);
    mainFrame.add(canPan, BorderLayout.CENTER);
    mainFrame.add(statPan, BorderLayout.LINE_END);

    //Instantiate & setup JMenuBar.
    menuBar = new JMenuBar();
    mainFrame.add(menuBar, BorderLayout.PAGE_START);

    //Instantiate JMenu's & JMenuItem's.
    gameMenu = new JMenu("Game");
    helpMenu = new JMenu("Help");
    newGame = new JMenuItem("New Game");
    exit = new JMenuItem("Exit Game");
    about = new JMenuItem("About");

    //Add JMenuItems to their JMenu's.
    gameMenu.add(newGame);
    gameMenu.add(exit);
    helpMenu.add(about);
    menuBar.add(gameMenu);
    menuBar.add(helpMenu);

    //Add items to JPanels.
    canvas = new PongCanvas();
    mainFrame.getContentPane().add(canvas);

    //Set window parameters and pack.
    mainFrame.pack();
    mainFrame.setSize(800, 600);
    mainFrame.setResizable(false);
    mainFrame.setVisible(true);
}

Мой вопрос такой; Есть ли способ динамического рисования компонентов на объекте canPan ? то есть круг и несколько прямоугольников? Положение этих компонентов, конечно же, будет меняться в зависимости от ввода пользователя.

Ответы [ 2 ]

3 голосов
/ 01 ноября 2011

Да, переопределите его paintComponent(Graphics g) метод и нарисуйте копию переданного Graphics объекта (который вы впоследствии утилизируете).

Для получения дополнительной информации см. 2D-графика .

2 голосов
/ 01 ноября 2011

Есть учебник 2D Графика (с примерами кода) ответы на ваш вопрос, подробнее об этом здесь и здесь

...