Программирование на Java 2020-2021 учебный год Лекция 6 Стандартная библиотека Java Пример 3
Перейти. Head First Java Авторы: Kathy Sierra, Bert Bates. Приложение с графическим интерфейсом, с. 337.
Обработка событий , с. 355. Применение библиотеки Swing. import javax.swing.*; import java.awt.*; import java.awt.event.*; public class MyGui implements ActionListener { JFrame frame; JLabel label; JButton colorButton; JButton labelButton; int i; public static void main(String[] args) { MyGui gui = new MyGui(); gui.go(); } public void go() { frame = new JFrame(); label = new JLabel("I'm label!"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); colorButton = new JButton("Change colors"); labelButton = new JButton("Change label"); colorButton.addActionListener(this); labelButton.addActionListener(this); MyDrawPanel drawPanel = new MyDrawPanel(); frame.getContentPane().add(BorderLayout.SOUTH, colorButton); frame.getContentPane().add(BorderLayout.CENTER, drawPanel); frame.getContentPane().add(BorderLayout.EAST, labelButton); frame.getContentPane().add(BorderLayout.WEST, label); frame.setSize(500, 300); frame.setVisible(true); } public void actionPerformed(ActionEvent event) { if (event.getSource() == colorButton) { frame.repaint(); } else { if (event.getSource() == labelButton) { label.setText("That hurt!" + i); i++; } } } } class MyDrawPanel extends JPanel { public void paintComponent(Graphics g) { Graphics2D g2d = (Graphics2D) g; int red = (int) (Math.random() * 256); int green = (int) (Math.random() * 256); int blue = (int) (Math.random() * 256); Color startColor = new Color(red, green, blue); red = (int) (Math.random() * 256); green = (int) (Math.random() * 256); blue = (int) (Math.random() * 256); Color endColor = new Color(red, green, blue); GradientPaint gradient = new GradientPaint(70, 70, startColor, 150, 150, endColor); g2d.setPaint(gradient); g2d.fillOval(70, 70, 100, 100); /* Graphics2D g2d = (Graphics2D) g; GradientPaint gradient = new GradientPaint(70, 70, Color.blue, 150, 150, Color.orange); g2d.setPaint(gradient); g2d.fillOval(70, 70, 100, 100); */ } }