Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
2 / 2 / 0
Регистрация: 21.11.2019
Сообщений: 65

Перемещение рисунка в JFrame

16.04.2020, 23:52. Показов 586. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, у меня есть объект (рисунок трактор), состоящий там из квадратов кругов и т.д., мне нужно его перемещать в окне как вот тут:
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
public static void main(String[] args) {
 
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI(); 
            }
        });
    }
    private static void createAndShowGUI() {
        System.out.println("Created GUI on EDT? "+SwingUtilities.isEventDispatchThread());
        JFrame f = new JFrame();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        f.add(new MyPanel());
        f.setSize(250,250);
        f.setVisible(true);
    } 
}
class MyPanel extends JPanel {
 
    RedSquare redSquare = new RedSquare();
    
    public MyPanel() {
        setBorder(BorderFactory.createLineBorder(Color.black));
        addMouseListener(new MouseAdapter(){
            public void mousePressed(MouseEvent e){
                moveSquare(e.getX(),e.getY());
            }
        });
        addMouseMotionListener(new MouseAdapter(){
            public void mouseDragged(MouseEvent e){
                moveSquare(e.getX(),e.getY());
            }
        });
    }
    private void moveSquare(int x, int y){
 
        // Current square state, stored as final variables 
        // to avoid repeat invocations of the same methods.
        final int CURR_X = redSquare.getX();
        final int CURR_Y = redSquare.getY();
        final int CURR_W = redSquare.getWidth();
        final int CURR_H = redSquare.getHeight();   
        final int OFFSET = 1;
 
        if ((CURR_X!=x) || (CURR_Y!=y)) {
            // The square is moving, repaint background 
            // over the old square location. 
            repaint(CURR_X,CURR_Y,CURR_W+OFFSET,CURR_H+OFFSET);
            // Update coordinates.
            redSquare.setX(x);
            redSquare.setY(y);
            // Repaint the square at the new location.
            repaint(redSquare.getX(), redSquare.getY(), 
                    redSquare.getWidth()+OFFSET, 
                    redSquare.getHeight()+OFFSET);
        }
    }
    public Dimension getPreferredSize() {
        return new Dimension(250,200);
    }   
    public void paintComponent(Graphics g) {
        super.paintComponent(g);       
        redSquare.paintSquare(g);
    }  
}
class RedSquare{
 
    private int xPos = 50;
    private int yPos = 50;
    private int width = 20;
    private int height = 20;
 
    public void setX(int xPos){ 
        this.xPos = xPos;
    }
    public int getX(){
        return xPos;
    }
    public void setY(int yPos){
        this.yPos = yPos;
    }
    public int getY(){
        return yPos;
    }
    public int getWidth(){
        return width;
    } 
    public int getHeight(){
        return height;
    }
    public void paintSquare(Graphics g){
        g.setColor(Color.RED);
        g.fillRect(xPos,yPos,width,height);
        g.setColor(Color.BLACK);
        g.drawRect(xPos,yPos,width,height); 
    }
Только вместо это квадрата должен быть мой рисунок вот он:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class MyDraw extends JPanel {
 
    @Override
    public void paint(Graphics g) {
        Graphics2D graphic2d = (Graphics2D) g;
        graphic2d.setStroke(new BasicStroke(2.0f));
        graphic2d.setColor(new Color(25, 25, 112));
        graphic2d.fillRect(90, 20, 60, 110);
        graphic2d.fillRect(150, 75, 120, 55);
        graphic2d.setColor(Color.black);
        graphic2d.fillRect(100, 25, 40, 70);
        graphic2d.fillRect(200, 35, 10, 40);
        graphic2d.fillOval(200, 120, 50, 50);
        graphic2d.fillOval(80, 100, 70, 70);
        graphic2d.setColor(new Color(105, 105, 105));
        graphic2d.fillOval(210, 130, 30, 30);
        graphic2d.fillOval(95, 115, 40, 40);
    }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.04.2020, 23:52
Ответы с готовыми решениями:

Перемещение элементов формы в центр при разворачивании JFrame на полный экран
При увеличении JFrame в полный экран, компоненты на JFrame перемещаются в угол, нужно чтобы были в центре. Помогите, пожалуйста!

Проходил ли кто-то видео-курс techpro? Как у них получилось JFrame в JFrame добавить
Проходил ли кто-то видео-курс techpro? Как у них получилось JFrame в JFrame добавить? http://teachpro.ru/Course/JavaforBeginners...

Как закрыть один JFrame и открыть новый JFrame?
привет подскажите как реализовать. есть отдельный класс с выпадающим меню(там три пункта). есть отдельный класс который рисует фрейм,...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.04.2020, 23:52
Помогаю со студенческими работами здесь

Как сделать Jframe внутри другого JFrame
Доброго времени суток джентльмены и леди. Как сделать так, что бы внутри главного JFrame запустить несколько других...

Перемещение рисунка кольца
Создайте программу вывода на экран компьютера рисунка кольца желтого цвета, организуя его перемещение с помощью клавиш управления курсором....

Маштаб и перемещение рисунка в Image
Подскажите:Я загружаю на Image рисунок. Какую функцию надо использовать чтобы изменить размер этого рисунка?И какую функцию надо...

Анимация: перемещение и масштабирование рисунка
Вот текст программы: begin SetPenWidth(3); Circle(200,200,120); Circle(200,200,60); FloodFill(200,200,clBlack); ...

Нарисовать рисунок. Сделать масштабирование и перемещение рисунка
Нарисовать рисунок в турбо паскаль. И нужно сделать масштабирование и перемещение рисунка


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru