1 / 1 / 0
Регистрация: 24.10.2020
Сообщений: 18
1

Не могу запустить отрисовку фигур по нажатию кнопки

12.05.2022, 22:55. Показов 133. Ответов 0

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

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import javax.swing.JFrame;
//окно для вывода флага
public class Window {
 
    public static void main(String[] args) {
        JFrame frame = new JFrame("Окно для графики");
        frame.setSize(400, 400);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        Paint paintflag = new Paint();
        frame.add(paintflag);
        frame.setVisible(true);
    }
    
}
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
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.geom.Line2D;
 
public class Flag {
//класс для задания параметров флага
    private int x;
    private int y;
    private int width;
    private int heigth;
    private final int STRIPES_VERTICAL;
    private final int STRIPES_HORIZONTAL;
    private Color col1;
    private Color col2;
    private Color col3;
    private boolean orientLine;
    
    public Flag(int x, int y, int w, int h, Color color1, Color color2, Color color3, boolean oline) {
        this.x = x;
        this.y = y;
        this.width = w;
        this.heigth = h;
        this.STRIPES_VERTICAL = heigth / 3;
        this.STRIPES_HORIZONTAL = width / 3;
        this.col1 = color1;
        this.col2 = color2;
        this.col3 = color3;
        this.orientLine = oline;
    }
    
    public void draw(Graphics2D g2) {
        
        if (orientLine) {
            Rectangle line1 = new Rectangle(x, y, width, STRIPES_VERTICAL);
            Rectangle line2 = new Rectangle(x, y + STRIPES_VERTICAL, width, STRIPES_VERTICAL);
            Rectangle line3 = new Rectangle(x, y + STRIPES_VERTICAL*2, width, STRIPES_VERTICAL);
            g2.setColor(col1);
            g2.fill(line1);
            g2.draw(line1);
            g2.setColor(col2);
            g2.fill(line2);
            g2.draw(line2);
            g2.setColor(col3);
            g2.fill(line3);
            g2.draw(line3);
        }
        else {
            Rectangle line1 = new Rectangle(x, y, STRIPES_HORIZONTAL, heigth);
            Rectangle line2 = new Rectangle(x + STRIPES_HORIZONTAL, y, STRIPES_HORIZONTAL, heigth);
            Rectangle line3 = new Rectangle(x + STRIPES_HORIZONTAL*2, y, STRIPES_HORIZONTAL, heigth);
            g2.setColor(col1);
            g2.fill(line1);
            g2.draw(line1);
            g2.setColor(col2);
            g2.fill(line2);
            g2.draw(line2);
            g2.setColor(col3);
            g2.fill(line3);
            g2.draw(line3);
        }
    }
}
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
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Line2D;
 
import javax.swing.JButton;
import javax.swing.JComponent;
 
class Paint extends JComponent {
    JButton jbtnPush;
    
    public Paint() {
        setLayout(new FlowLayout());
        jbtnPush = new JButton("Push");
        add(jbtnPush);
    }
 
    @Override
    protected void paintComponent(Graphics g) {
        Graphics2D g2 = (Graphics2D)g;
        
        jbtnPush.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                                         //ВОТ ТУТ НЕ ПОЛУЧАЕТСЯ
                Flag franceflag = new Flag(100,200,300,180,Color.BLUE,Color.WHITE, Color.RED, false);
                franceflag.draw(g2);
            }
        });
    }
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.05.2022, 22:55
Ответы с готовыми решениями:

Как запустить скрипт по нажатию кнопки?
Здравствуйте, я новичек в django и нужна помощь желательно с примером есть код таймера который...

Запустить стороннее приложение по нажатию кнопки
Доброго времени суток Очень мучаюсь с проблемкой Нужно запустить сторонние приложение по...

Запустить bat файл по нажатию кнопки
подскажите пожалуйста как запустить bat файл который лежит в корне диска С по нажатию на кнопку,...

Как запустить Google Chrome по нажатию кнопки?
Как при нажатии кнопки запустить Chrome, чтобы она сразу переходила на начальную страницу яндекс?

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.05.2022, 22:55
Помогаю со студенческими работами здесь

Как запустить по нажатию кнопки два потока?
Всем здравствуйте. Использую в приложение потоки. Скажите пожалуйста как запустить по нажатию...

Запустить ярлык по нажатию кнопки на форме html
<button ="C:\Users\ws05900008005\Desktop\iexplore.exe">Открыть</button> Попытался запустить не...

Как запустить PHP скрипт по нажатию кнопки
Здравствуйте На HTML странице есть кнопка после нажатия которой надо запустить скрипт PHP после...

Как запустить PHP скрипт по нажатию кнопки?
Здравствуйте! Уже несколько дней не могу решить вопрос, искал ответ в разных областях - не смог...

Как запустить сторонний exe-файл по нажатию кнопки?
Как открыть в формах . ехе, с помощью кнопки ?

Как по нажатию кнопки запустить консольный код на выполнение?
Form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru