Закончил тему:
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);
}
}
} |
|
|