Как я могу сделать не-Swing кнопку в Java? - PullRequest
4 голосов
/ 05 января 2011

Я создаю игру, в которой у меня есть меню с несколькими видами для выбора типа игры, параметров и т. Д. С использованием переходов состояния игры.Каждое из меню будет активно отображаться в JFrame на Canvas объектах.Поскольку я выполняю активный рендеринг в каждом игровом состоянии, рисуя BufferedImage на Canvas , я не могу использовать JButton или любой другой JComponent или Компонент (AWT), потому что объект Graphics2D не может рисовать их, как:

Graphics2D g = bufferStrategy.getDrawGraphics();
g.draw(new JButton("Click me"));

Как реализовать пользовательскую кнопку, которая может получать ввод мыши и рисовать с помощьюобъект Graphics2D?

Ответы [ 2 ]

1 голос
/ 05 января 2011

Добавьте прослушиватель мыши к компоненту, на котором вы рисуете, и пусть он определяет, был ли щелчок мыши в области, кнопкой которой вы хотите быть, или нет.

0 голосов
/ 05 января 2011

Зачем вам использовать Canvas в приложении, которое уже использует Swing (JFrame - это Swing)?

BufferedImage image = new BufferedImage(blah....)
Graphics2D gfx = image.createGraphics();
JButton but = new JButton("Click me");
but.update(gfx);

Но это действительно очень уродливо!

Почему бы вам невзять JPanel?На самом деле, вы можете переписать метод рисования, просто вызвав метод update, чтобы панель не очищалась (но я давно играл с Java).Затем вы можете использовать Graphics2D, который вы получаете в качестве аргумента в методе update, для рисования чего-либо, и это позволяет вам даже добавлять свои собственные кнопки и другие вещи к нему ...

...