Форум программистов, компьютерный форум, киберфорум
AlexProgramm
Войти
Регистрация
Восстановить пароль
Оценить эту запись

Изученный материал по Java. GUI.

Запись от AlexProgramm размещена 22.01.2023 в 15:16

Закончил тему:

10a. GUI. Графический пользовательский интерфейс.

Задачи.
1.
Нарисовать круг и сделать кнопку, при нажатии на которую круг будет менять свой цвет.

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
package test.graphica;
 
import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
 
/**
 *
 * @author telal
 */
public class Graphica {
 
    JFrame frame = new JFrame();
    JLabel label = new JLabel("I was a label");
    JButton but = new JButton("Click me");
    JButton lbut = new JButton("Lab me");
    MyPanel p;
    
    public static void main(String[] args) {
        //Panel p = new Panel();
        Graphica gr = new Graphica();
        gr.go();
        
    }
    public void go() {
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(1000, 800);
        frame.setVisible(true);
        p = new MyPanel();
        
        frame.getContentPane().add(BorderLayout.SOUTH,but);
        frame.getContentPane().add(BorderLayout.EAST,lbut);
        frame.getContentPane().add(BorderLayout.CENTER,p);
        frame.getContentPane().add(BorderLayout.WEST,label);
        but.addActionListener(new ColorListener());
        lbut.addActionListener(new LabelListener());
        
    }
 
    
    
    class LabelListener implements ActionListener {
 
        @Override
        public void actionPerformed(ActionEvent e) {
            label.setText("Im label");
        }
    }
    class ColorListener implements ActionListener {
 
        @Override
        public void actionPerformed(ActionEvent e) {
            frame.repaint();
        }
    }
}
 
package test.graphica;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.*;
 
 
public class MyPanel extends JPanel {
       
    public void paintComponent(Graphics g) {
        g.fillRect(0, 0, this.getWidth(), this.getHeight());
        
        int red = (int) (Math.random() * 255);
        int green = (int) (Math.random() * 255);
        int blue = (int) (Math.random() * 255);
        Color randomColor = new Color(red, green, blue);
        g.setColor(randomColor);
        g.fillOval(70, 70, 100, 100);
        //Image image = new ImageIcon("E:\\Аватары\\Безымянный.jpg").getImage();
        //g.drawImage(image, 3, 4, this);
        //g.drawOval(10, 10, 20, 30);
    }
2. Нарисовать круг и заставить его двигаться. (Здесь вроде получилось, но не получается заставить круг двигаться по нажатию кнопки, если помещаю цикл изменения координат круга в метод actionPerformed, то движения не видно, только начальное и конечное положение круга, может кто поможет? )

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
package test.grmoveoval;
 
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
 
/**
 *
 * @author telal
 */
public class GrMoveOval implements ActionListener {
 
    JFrame frame = new JFrame();
    JButton but = new JButton("Click me");
    MyPanel mpl = new MyPanel();
    int x = 10, y = 10;
    
    public static void main(String[] args) {
        GrMoveOval gm = new GrMoveOval();
        gm.go();
    }
    
    public void go() {
 
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(1000, 800);
        frame.setVisible(true);
        //MyPanel mp = new MyPanel();
        
        frame.getContentPane().add(BorderLayout.SOUTH,but);
        frame.getContentPane().add(BorderLayout.CENTER,mpl);
        
        but.addActionListener(this);
        
        int i;
        for (i = 0; i < 130; i++) {
            x++;
            y++;
            
            mpl.repaint();
            
            try {
                Thread.sleep(50);
            } catch (InterruptedException ex) {
                Logger.getLogger(GrMoveOval.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
    
    @Override
    public void actionPerformed(ActionEvent e) {
        
    }
    
    public class MyPanel extends JPanel {
        
        public void paintComponent(Graphics g) {
        g.fillRect(0, 0, this.getWidth(), this.getHeight());
        int red = (int) (Math.random() * 255);
        int green = (int) (Math.random() * 255);
        int blue = (int) (Math.random() * 255);
        Color randomColor = new Color(red, green, blue);
        g.setColor(randomColor);
        g.fillOval(x, y, 100, 100);
        }
    }    
}
Размещено в Без категории
Показов 308 Комментарии 0
Всего комментариев 0
Комментарии
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru