powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / AWT/Swing
8 сообщений из 8, страница 1 из 1
AWT/Swing
    #38492508
alex021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер!
Пытаюсь запихнуть в один апплет графику из авт и кнопку свинга и что-то не совсем получается.
значит есть JPanel , на которой размещается кнопка JButton и какой-нибудь компонент из авт пусть будет линия, которую хочу нарисовать методом drawLine()
Понятно? что дело не хочет запускается так как хочу я, потому что метод drawLine где-то не объявлен или куда-то не засунут и тд, короче не знаю что делать. Прошу помощи =)
Заранее спасибо за потраченное Вами время!

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
public class ButtonApplet extends JFrame {

    public static void createGUI() {
        JFrame frame = new JFrame("Test frame");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        final Font font = new Font("Verdana", Font.PLAIN, 25);

        JPanel butPanel = new JPanel();

        JButton addButton = new JButton("+");
        butPanel.add(addButton);

        butPanel.add(q.drawLine(g)); //ТАК ЯВНО НЕ ДЕЛАЕТСЯ???)) но на всякий попытался

        frame.getContentPane().setLayout(new BorderLayout());
        frame.getContentPane().add(butPanel, BorderLayout.NORTH);
        frame.setPreferredSize(new Dimension(250, 200));
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

    public void drawLine(Graphics g) {

        Graphics2D g2 = (Graphics2D) g;
        g2.setColor(Color.BLACK);
        g2.setStroke(new BasicStroke(10.0F));
        g2.drawLine(10, 10, 40, 40);
    }

    public void paint(Graphics g) {

        drawLine();//ВОТ ЭТА ШТУКА ТОЖЕ НЕ РАБОТАЕТ, тоже пытался на всякий)

    

    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JFrame.setDefaultLookAndFeelDecorated(true);
                createGUI();
                ButtonApplet q = new ButtonApplet();//ну и вот таким запуском при создании объекта , я решил всех добить
                q.drawLine(g);//смейтесь на здоровье

            }
        });
    }
}
}
 
...
Рейтинг: 0 / 0
AWT/Swing
    #38492512
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Непосредственно на JFrame нельзя рисовать. Можно на его RootPane либо GlassPane. Поэтому просто завел отдельный контрол для отрисовки и кинул его на JFrame.
getContentPane() не нужен ещё современ Java 5
Линия это не компонент.
В Swing лучше переопределять paintComponent(), а не paint()


Вот передалал в работающий пример.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
import java.awt.*;
import javax.swing.*;

class CanvasPane extends JPanel{
    public void drawLine(Graphics g) {

        Graphics2D g2 = (Graphics2D) g;
        g2.setColor(Color.BLACK);
        g2.setStroke(new BasicStroke(10.0F));
        g2.drawLine(10, 10, 40, 40);
    }

    public void paintComponent(Graphics g) {
        drawLine(g);
    }

}


public class ButtonApplet extends JFrame {

    public static void createGUI() {
        JFrame frame = new JFrame("Test frame");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        final Font font = new Font("Verdana", Font.PLAIN, 25);

        JPanel butPanel = new JPanel();

        JButton addButton = new JButton("+");
        butPanel.add(addButton);

        frame.setLayout(new BorderLayout());
        frame.add(butPanel, BorderLayout.NORTH);
        frame.add(new CanvasPane(), BorderLayout.CENTER);
        frame.setPreferredSize(new Dimension(250, 200));
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

    

    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JFrame.setDefaultLookAndFeelDecorated(true);
                createGUI();
                ButtonApplet q = new ButtonApplet();//ну и вот таким запуском при создании объекта , я решил всех добить

            }
        });
    }

}
...
Рейтинг: 0 / 0
AWT/Swing
    #38492517
alex021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz, спасибо, что потрудились ответить. очень помогли, если честно)
...
Рейтинг: 0 / 0
AWT/Swing
    #38492518
alex021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,
отдельное спасибо за совет
...
Рейтинг: 0 / 0
AWT/Swing
    #38492524
alex021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

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

Ясное дело, что необходим метод прослушивающий событие - реагирующий на нажатие, и.. метод который будет непосредственно перемещать, назовем его lineMover().

Вот меня интересует начинка lineMover() .
Спасибо.
...
Рейтинг: 0 / 0
AWT/Swing
    #38492581
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex021может быть подскажете что посмотреть, чтобы допустим линия по нажатию кнопки плавно перемещалась, а еще лучше чтобы можно было задать и скорость перемещения?

Лучше было бы взять JavaFX. Там имеются готовые инструменты анимации.
Для Java2D смотрите примеры в JDK/demo, там есть анимация. А так же изучайте способы реализации game loop
http://www.koonsolo.com/news/dewitters-gameloop/
...
Рейтинг: 0 / 0
AWT/Swing
    #38492598
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczalex021может быть подскажете что посмотреть, чтобы допустим линия по нажатию кнопки плавно перемещалась, а еще лучше чтобы можно было задать и скорость перемещения?

Лучше было бы взять JavaFX. Там имеются готовые инструменты анимации.
Для Java2D смотрите примеры в JDK/demo, там есть анимация. А так же изучайте способы реализации game loop
http://www.koonsolo.com/news/dewitters-gameloop/

в догонку:

http://download.oracle.com/otndocs/products/javafx/2/samples/Ensemble/index.html
...
Рейтинг: 0 / 0
AWT/Swing
    #38492670
alex021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,Озверин
спасибо Вам, господа! =)
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / AWT/Swing
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]