Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
26 / 26 / 3
Регистрация: 10.04.2013
Сообщений: 167
1

Двигать форму

23.04.2014, 23:21. Показов 1331. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Такое задание.

Кликнул на форму и форма привязалась к курсору.
Кликнул два раза, отвязалась от курсора.

Что значит привязалась, когда я двигаю курсор то и форма двигается за курсором.
Пробовал через mouseAdapter, не очень получилось.

Если можно, например кликнул на центр формы. курсор привязался к центру формы и когда я вожу мишь, то форма двигается за центр.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.04.2014, 23:21
Ответы с готовыми решениями:

Как двигать компоненты?
Когда-то давно, в учебнике по Delphi, находил пример создания игры путем возможности перемещения...

Не получается двигать объекты
Всем привет. Я тут решил создать игру. Сначала пользовался PascalABC.net, но не получается делать...

Как двигать выделенную часть кода в Eclipse?
То есть перемещать её сквозь другие строки.

Как запретить двигать форму
Как запретить двигать форму?

3
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,926
24.04.2014, 02:09 2
Лучший ответ Сообщение было отмечено BabyGluk как решение

Решение

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
public class Main extends JFrame {
    private boolean move;
 
    public Main() throws HeadlessException {
        move = false;
        setTitle("Sample");
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setVisible(true);
        setSize(640, 480);
 
        addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                if (e.getClickCount() > 1) {
                    move = false;
                } else {
                    move = true;
                }
            }
        });
 
        addMouseMotionListener(new MouseAdapter() {
            @Override
            public void mouseMoved(MouseEvent e) {
                if (move) {
                    //тут код изменения окна относительно координат курсора
                }
            }
        });
    }
 
    public static void main(String[] args) {
        new Main();
    }
}
0
26 / 26 / 3
Регистрация: 10.04.2013
Сообщений: 167
24.04.2014, 11:37  [ТС] 3
reisal78, да я вот тоже самое написал, именно там где нужно координаты двигать, у меня в верхний левый угол бежит)

Добавлено через 12 минут
Вот, что то похожее)
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
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.util.ArrayList;
import java.util.List;
 
/**
 * Created by Вова on 23.04.14.
 */
public class Main {
    public static void main(String[] args) {
            SwingUtilities.invokeLater(new Runnable() {
                @Override
                public void run() {
                    new MyFrame();
                }
            });
    }
 
 
 
 
   static class MyFrame extends JFrame{
        private boolean move;
       private List<Point> pointList;
        MyFrame() throws HeadlessException {
            setSize(new Dimension(600, 600));
            setLocationRelativeTo(null);
            setTitle("No title");
            setVisible(true);
            pointList = new ArrayList<Point>();
            setDefaultCloseOperation(EXIT_ON_CLOSE);
            addMouseListener(new MouseAdapter() {
                @Override
                public void mouseClicked(MouseEvent mouseEvent) {
                    if (mouseEvent.getClickCount() > 1)
                        move = false;
                    else
                        move = true;
 
                }
            });
 
            addMouseMotionListener(new MouseMotionAdapter() {
                @Override
                public void mouseMoved(MouseEvent mouseEvent) {
                    pointList.add(new Point(mouseEvent.getX(), mouseEvent.getY()));
                    if (pointList.size() > 1) {
                    double xCurr = pointList.get(pointList.size() - 1).getX();
                    double xLast = pointList.get(pointList.size() - 2).getX();
                    double yCurr = pointList.get(pointList.size() - 1).getY();
                    double yLast = pointList.get(pointList.size() - 2).getY();
                        if (xCurr > xLast) {
                            setLocation(getX()+1,getY());
                        }
                        else
                            setLocation(getX()-1,getY());
 
                        if (yCurr > yLast) {
                            setLocation(getX(), getY() + 1);
                        }
                        else
                            setLocation(getX(), getY() - 1);
 
                    }
 
                }
            });
        }
    }
}
0
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,926
24.04.2014, 16:04 4
Лучший ответ Сообщение было отмечено BabyGluk как решение

Решение

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
public class Main extends JFrame {
    private boolean move;
 
    public Main() throws HeadlessException {
        move = false;
        setTitle("Sample");
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setVisible(true);
        setSize(640, 480);
        final int[] x = new int[1];
        final int[] y = new int[1];
 
        addMouseListener(new MouseAdapter() {
 
            @Override
            public void mouseClicked(MouseEvent e) {
                x[0] = e.getX();
                y[0] = e.getY();
                if (e.getClickCount() > 1) {
                    move = false;
                } else {
                    move = true;
                }
            }
        });
 
 
        addMouseMotionListener(new MouseAdapter() {
            @Override
            public void mouseMoved(MouseEvent e) {
                if (move) {
                    setLocation(getX() + e.getX()- x[0], getY() + e.getY()- y[0]);
 
                }
            }
 
 
        });
    }
 
    public static void main(String[] args) {
        new Main();
    }
}
1
24.04.2014, 16:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.04.2014, 16:04
Помогаю со студенческими работами здесь

Как двигать форму без рамки, за Controls
Доброго времени суток, господа Собственно нужно как то двигать форму за PIctureBox... Как двигать...

При нажатии на кнопки со стрелками двигать форму по экрану
1) Как сделать так чтобы при нажатии на кнопки со стрелками форма двигалась по экрану? 2) Как...

Как двигать форму без заголовка за определенный элемент (панель)?
Всем привет ребят, мне надо сделать так, что бы я мог двигать форму без заголовка за панель -(...

Как сделать чтоб нажимая на лабел можно было двигать форму по экрану с помощью DragDrop?
На форме есть Label1. Как сделать чтоб нажимая на лабел можно было двигать форму по экрану с...

Как в Pascal ABC сделать так, чтобы можно было двигать форму без границ (FormBorderStyle.None)?
Пробовал использовать этот код: {$apptype windows} {$reference 'System.Windows.Forms.dll'}...

Как сделать форму внутри, которой находится несколько панелей границы которых может двигать пользователь?
Как сделать форму внутри, которой находится несколько панелей границы которых может двигать...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru