Java JPanel поверх JPanel (Рисование поверх чертежа) - PullRequest
0 голосов
/ 18 октября 2011

Я пытаюсь написать код для генерации графика, подобного следующему: http://www.mathgoodies.com/lessons/graphs/images/line_example1.jpg

Мне нужно более одной отдельной строки (надеюсь, это то, что они называются).

IЯ только начинаю изучать AWT и свинг.После трех часов работы я не смог найти способ нарисовать линию поверх любого другого рисунка.

Я попытаюсь объяснить мою проблему на примере.

Давайтескажем, я рисую квадрат следующим образом:

JFrame window = new JFrame();
window.setLayout(null);
window.setVisible(true);

Graph graph = new Graph();
window.add(graph);
//-------------------
public class Graph extends JPanel {
    ....
    public void paintComponent (Graphics g) {
         super.paintComponent(g);
         g.setColor(Color.white);
         g.fillRect(150, 20, x, y);
    }
    ....
}

Как нарисовать другую линию или что-нибудь еще поверх этого белого квадрата без рисования линии в методе GraphS paintComponent?Как добавить еще одну JPanel поверх другой, чтобы они оба были видны?(Я использую JPanel для добавления некоторых кнопок)

Надеюсь, вы понимаете, о чем я спрашиваю.

Спасибо!

1 Ответ

2 голосов
/ 18 октября 2011

Как нарисовать другую линию или что-нибудь еще поверх этого белого квадрата без рисования линии в методе GraphS paintComponent?

Все пользовательские рисования должны выполняться методом paintComponent (). Я не уверен, почему вы хотите добавить еще одну панель, которая рисует на линии. Сохраняйте это простым и храните весь код рисования в одном месте.

Если вы хотите добавить на панель другие компоненты (например, JPanel), вы должны использовать менеджеры компоновки для правильного размещения компонентов. Вам также необходимо сделать компоненты непрозрачными с помощью метода setOpaque (...).

Другой способ наложения слоев - это использование JLayeredPane.

Начните с прочтения учебника Swing . Есть разделы на:

  1. Использование менеджеров по макету
  2. Использование многослойных панелей.
...