Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
1 / 1 / 0
Регистрация: 14.01.2018
Сообщений: 102
1

Треугольник рисуется не до конца

05.11.2018, 15:55. Показов 806. Ответов 1
Метки gui (Все метки)

Author24 — интернет-сервис помощи студентам
На панеле рисуется треугольник, но когда пользователь начинает его перемещать, то он рисуется только на половину, либо даже меньше, в чем проблема?
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
import GUI.Paint;
 
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
 
public  class Triangle extends JPanel{
    protected int corX;
    protected int corY;
    protected int AB=20; // сторона
    protected boolean putDown; // нажата ли фигура
    protected int size;
    protected Graphics g;
 
    public Triangle(int b, int c, Graphics g){
        this.g = g;
        corX = b;
        corY = c;
        size = 2;
    }
 
  
    protected MouseListener listener = new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent mouseEvent) {
            if(!putDown){
                Paint.makeCurrent(Figure.this);
                putDown = true;
                setFocusable(true);
                requestFocusInWindow();
            }else {
                Paint.delCurrent();
                putDown = false;
            }
            draw(g);
        }
    };
 
    protected KeyListener keyListener = new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent keyEvent) {
            if(!putDown)
                return;
 
                int dx = 0, dy = 0;
                switch (keyEvent.getKeyCode()) {
                    case 37: // left
                        dx = -5;
                        break;
                    case 38: // bottom
                        dy = -5;
                        break;
                    case 39: // right
                        dx = 5;
                        break;
                    case 40: // up
                        dy = 5;
                        break;
                }
                if (setPlace(corX + dx - 169, corY + dy - 26)) {
                    g.clearRect(corX, corY, AB+1, AB+1);
                    corX += dx;
                    corY += dy;
                    draw(g);
                }      
        }
    };
 
public boolean setPlace(int x, int y) {
        //координаты относительно панели
        if(y<AB/2 || y+AB/2> Paint.heightPaint || x+AB> Paint.weightPaint)
            return false;
 
        setBounds(x,y-AB/2,AB, AB);
        return true;
    }
 
    public void draw(Graphics g){
        if(putDown){
            g.clearRect(corX, corY, AB, AB);
        }else
            g.setColor(color);
        g.drawPolygon(new int[]{corX,corX+AB,corX+AB}, new int[]{corY+AB/2,corY,corY+AB}, 3);
    }
 
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.11.2018, 15:55
Ответы с готовыми решениями:

Не рисуется треугольник :(
Не рисуется треугольник:( делаю вот по этому уроку:...

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

Почему треугольник рисуется и исчезает? SFML
Всех с 1м декабря ;) Создаю вот такой абстрактный класс #pragma once class Figure {...

Почему у меня не рисуется треугольник, а появляется пустое окно
#include&lt;iostream&gt; #include&lt;GL/glut.h&gt; using namespace std; void disp(void){...

1
132 / 126 / 85
Регистрация: 13.09.2013
Сообщений: 485
10.11.2018, 23:30 2
Честно говоря, код не запустить - там есть какой-то сторонний класс.
Но, попробуйте посмотреть в сторону методов repaint и revalidate у JPanel
0
10.11.2018, 23:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.11.2018, 23:30
Помогаю со студенческими работами здесь

Создать базовый класс Треугольник с 2 наследниками: Равносторонний треугольник, Прямоугольный треугольник
Задание звучит так: Нужно создать базовый класс Треугольник с двумя наследующими его классами - ...

По кнопке "<" рисуется эллипс, а по кнопке ">" не рисуется: исправить ошибку (свой компонент, canvas)
Прикрепил проект. Вкратце: по нажатию по форме и по кнопке &quot;&lt;&quot; рисуется эллипс, а по кнопке &quot;&gt;&quot; не...

Поиск конца абзаца и конца материала
Как в конце файла Word (в конце всего текста) поменять два подряд идущих конца абзаца (¶) на один?...

В Paintbox вписать в круг треугольник, потом квадрат, и равнобедренный треугольник
Int a=StrToInt (Edit1-&gt;Text); PaintBox-&gt;Canvas-&gt;Ellipse(200-a/2,200-a/2,200+a/2,200+a/2);нарисовал...


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

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