Как я могу нарисовать одну метку с несколькими классами? (Java) - PullRequest
1 голос
/ 28 марта 2020

Я сейчас программирую игру, которая включает в себя множество графических элементов. В настоящее время код выглядит следующим образом:

protected void paintComponent(Graphics g)
{
        super.paintComponent(g);
        Graphics2D g2d = (Graphics2D) g;

        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

        g.drawImage(ImageLoader.gui_iconbar, xToRel(480), yToRel(810), xToRel(960), yToRel(270), null);
        g.drawImage(ClientVariables.getSplashart(Main.selectedCharacter, 0), xToRel(495), yToRel(825), xToRel(135), yToRel(240), null);

        //... (don't get confused with xToRel, it just makes changes to the drawing position if you move the camera)
}

Проблема в том, что существует ТОННЫ этого g.draw (что угодно); линий. Я хочу разделить их на несколько классов, но просто делаю 4 класса и копирую вставить gameFrame.add (GraphicclassXY); не работает, по логике. Кто-нибудь знает, как решить эту проблему? (Это не проблема, если решение включает в себя, например, внесение изменений из jlabel в canvas)

1 Ответ

2 голосов
/ 28 марта 2020

Создайте логические некомпонентные классы (которые не расширяют JLabel, JPanel, JFrame, JComponent или другие компоненты Swing), дайте им метод public void draw(Graphics g), дайте классу, который делает экземпляры чертежа ваших логических классов, возможно, в какой-то коллекции, итерируйте коллекцию и вызовите draw для ваших экземпляров в методе paintComponent.

...