Інформація про навчальний заклад

ВУЗ:
Національний технічний університет України Київський політехнічний інститут
Інститут:
Не вказано
Факультет:
ІСМ
Кафедра:
Не вказано

Інформація про роботу

Рік:
2024
Тип роботи:
Звіт
Предмет:
Програмування

Частина тексту файла (без зображень, графіків і формул):

Національний технічний університет України «Київський політехнічний інститут ім. Ігоря Сікорського» Кафедра цифрових технологій в енергетиці ЗВІТ з виконання лабораторної роботи №7 з дисципліни «Програмування на мові Java» «ПОБУДОВА ГРАФІЧНИХ ІНТЕРФЕЙСІВ ЗА ДОПОМОГОЮ ІНСТРУМЕНТІВ SWING» Варіант 13 Завдання 2 package org.example; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; /** Цей клас є головним вікном програми для малювання заокруглених прямокутників. Він дозволяє користувачам вибрати колір та розміри заокруглення, і відображає заокруглений прямокутник на панелі малювання. */ public class Task2 extends JFrame { private JComboBox<String> colorComboBox; private static JSpinner widthSpinner; private static JSpinner heightSpinner; /** Конструктор */ public Task2() { setTitle("Rounded Rectangle App"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLayout(new BorderLayout()); setSize(700, 500); DrawPanel drawPanel = new DrawPanel(); add(drawPanel, BorderLayout.CENTER); JPanel bottomPanel = new JPanel(new FlowLayout()); String[] colors = {"Чорний", "Червоний", "Зелений", "Синій"}; colorComboBox = new JComboBox<>(colors); bottomPanel.add(new JLabel("Колір:")); bottomPanel.add(colorComboBox); widthSpinner = new JSpinner(new SpinnerNumberModel(0, 0, 30, 1)); bottomPanel.add(new JLabel("Ширина закруглення:")); bottomPanel.add(widthSpinner); heightSpinner = new JSpinner(new SpinnerNumberModel(0, 0, 30, 1)); bottomPanel.add(new JLabel("Висота закруглення:")); bottomPanel.add(heightSpinner); JButton changeButton = new JButton("Змінити прямокутник"); changeButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { drawPanel.changeRectangle(); } }); bottomPanel.add(changeButton); add(bottomPanel, BorderLayout.SOUTH); setLocationRelativeTo(null); setVisible(true); } /** Панель, на якій малюється заокруглений прямокутник. */ public static class DrawPanel extends JPanel { public ComboBoxModel<Object> colorComboBox; Color rectangleColor = Color.BLACK; private int cornerWidth = 0; private int cornerHeight = 0; @Override protected void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2d = (Graphics2D) g; g2d.setColor(rectangleColor); g2d.fillRoundRect(50, 50, 200, 100, cornerWidth, cornerHeight); } public void changeRectangle() { String selectedColor = (String) colorComboBox.getSelectedItem(); rectangleColor = getColorFromString(selectedColor); cornerWidth = (int) widthSpinner.getValue(); cornerHeight = (int) heightSpinner.getValue(); repaint(); } Color getColorFromString(String colorName) { switch (colorName) { case "Чорний": return Color.BLACK; case "Червоний": return Color.RED; case "Зелений": return Color.GREEN; case "Синій": return Color.BLUE; default: return Color.BLACK; } } } public static void main(String[] args) { SwingUtilities.invokeLater(() -> new Task2()); } } / Тести: package org.example; import org.junit.jupiter.api.Test; import org.example.Task2; import javax.swing.*; import java.awt.*; import static org.junit.jupiter.api.Assertions.*; class Task2Test { @Test public void test_drawPanel_getColorFromString() { Task2.DrawPanel panel = new Task2.DrawPanel(); assertEquals(Color.BLACK, panel.getColorFromString("Чорний")); assertEquals(Color.RED, panel.getColorFromString("Червоний")); assertEquals(Color.GREEN, panel.getColorFromString("Зелений")); assertEquals(Color.BLUE, panel.getColorFromString("Синій")); assertEquals(Color.BLACK, panel.getColorFromString("Invalid color")); } } / Завдання 14 package org.example; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; /** * Клас Task14 представляє простий додаток для малювання трикутників. * Додаток дозволяє користувачам вводити координати трьох точок трикутника та відображати * намальований трикутник на графічному інтерфейсі. */ public class Task14 extends JFrame { JSpinner x1Spinner; JSpinner y1Spinner; JSpinner x2Spinner; JSpinner y2Spinner; JSpinner x3Spinner; JSpinner y3Spinner; private JPanel bottomPanel; JButton drawButton; /** * Конструктор */ public Task14() { setTitle("Triangle Drawing App"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLayout(new BorderLayout()); JPanel topPanel = new JPanel(new FlowLayout()); topPanel.add(new JLabel("X1:")); x1Spinner = createSpinner(); topPanel.add(x1Spinner); topPanel.add(new JLabel("Y1:")); y1Spinner = createSpinner(); topPanel.add(y1Spinner); topPanel.add(new JLabel("X2:")); x2Spinner = createSpinner(); topPanel.add(x2Spinner); topPanel.add(new JLabel("Y2:")); y2Spinner = createSpinner(); topPanel.add(y2Spinner); topPanel.add(new JLabel("X3:")); x3Spinner = createSpinner(); topPanel.add(x3Spinner); topPanel.add(new JLabel("Y3:")); y3Spinner = createSpinner(); topPanel.add(y3Spinner); drawButton = new JButton("Вивести трикутник"); drawButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { drawTriangle(); } }); topPanel.add(drawButton); add(topPanel, BorderLayout.NORTH); bottomPanel = new JPanel() { @Override protected void paintComponent(Graphics g) { super.paintComponent(g); drawTriangle(); } }; bottomPanel.setPreferredSize(new Dimension(400, 400)); add(bottomPanel, BorderLayout.CENTER); pack(); setLocationRelativeTo(null); setVisible(true); } private JSpinner createSpinner() { SpinnerModel spinnerModel = new SpinnerNumberModel(0, 0, 100, 1); return new JSpinner(spinnerModel); } /** * Малює трикутник на панелі, використовуючи введені користувачем координати. */ private void drawTriangle() { int x1 = (int) x1Spinner.getValue(); int y1 = (int) y1Spinner.getValue(); int x2 = (int) x2Spinner.getValue(); int y2 = (int) y2Spinner.getValue(); int x3 = (int) x3Spinner.getValue(); int y3 = (int) y3Spinner.getValue(); Graphics g = bottomPanel.getGraphics(); drawTriangle(g, x1, y1, x2, y2, x3, y3); } private void drawTriangle(Graphics g, int x1, int y1, int x2, int y2, int x3, int y3) { Graphics2D g2d = (Graphics2D) g; g2d.setColor(Color.BLACK); int[] xPoints = {x1, x2, x3}; int[] yPoints = {y1, y2, y3}; g2d.fillPolygon(xPoints, yPoints, 3); } public static void main(String[] args) { SwingUtilities.invokeLater(() -> new Task14()); } } / Тести: package org.example; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; class Task14Test { @Test public void testValidInput() { Task14 app = new Task14(); app.x1Spinner.setValue(50); app.y1Spinner.setValue(75); assertEquals(50, app.x1Spinner.getValue()); assertEquals(75, app.y1Spinner.getValue()); } @Test public void testInvalidInput() { Task14 app = new Task14(); app.x2Spinner.setValue(-10); assertEquals(-10, app.x2Spinner.getValue()); } @Test public void testDrawTriangleButton() { Task14 app = new Task14(); app.drawButton.doClick(); } @Test public void testDrawTriangleCoordinates() { Task14 app = new Task14(); app.x1Spinner.setValue(20); app.y1Spinner.setValue(30); app.x2Spinner.setValue(50); app.y2Spinner.setValue(60); app.x3Spinner.setValue(40); app.y3Spinner.setValue(20); app.drawButton.doClick(); } } / Завдання 21 package org.example; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; /** * Клас Task21 представляє додаток для відображення тексту з вказаними * параметрами, такими як шрифт, колір та текстовий рядок. */ public class Task21 extends JFrame { private JTextField textField; private JComboBox<String> fontComboBox; private JComboBox<String> colorComboBox; private JPanel outputPanel; /** * Конструктор */ public Task21() { setTitle("String Output App"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLayout(new BorderLayout()); createControlPanel(); createOutputPanel(); pack(); setLocationRelativeTo(null); setVisible(true); } /** * Створює панель управління з елементами для вводу тексту, вибору шрифту та кольору. */ private void createControlPanel() { JPanel controlPanel = new JPanel(new FlowLayout()); JLabel textLabel = new JLabel("Text:"); textField = new JTextField(15); JLabel fontLabel = new JLabel("Font:"); String[] fontOptions = {"Times New Roman", "Arial", "Verdana"}; fontComboBox = new JComboBox<>(fontOptions); JLabel colorLabel = new JLabel("Color:"); String[] colorOptions = {"Black", "Red", "Green", "Blue"}; colorComboBox = new JComboBox<>(colorOptions); JButton outputButton = new JButton("Output String"); outputButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { outputString(); } }); controlPanel.add(textLabel); controlPanel.add(textField); controlPanel.add(fontLabel); controlPanel.add(fontComboBox); controlPanel.add(colorLabel); controlPanel.add(colorComboBox); controlPanel.add(outputButton); add(controlPanel, BorderLayout.NORTH); } private void createOutputPanel() { outputPanel = new JPanel() { @Override protected void paintComponent(Graphics g) { super.paintComponent(g); drawString(g); } }; outputPanel.setPreferredSize(new Dimension(400, 200)); outputPanel.setBackground(Color.WHITE); add(outputPanel, BorderLayout.CENTER); } /** * Малює вказаний текст на графічному контексті враховуючи вибрані параметри. * * @param g Графічний контекст для малювання. */ private void drawString(Graphics g) { String text = textField.getText(); String fontName = fontComboBox.getSelectedItem().toString(); int fontStyle = Font.PLAIN; int fontSize = 20; switch (colorComboBox.getSelectedItem().toString()) { case "Black": g.setColor(Color.BLACK); break; case "Red": g.setColor(Color.RED); break; case "Green": g.setColor(Color.GREEN); break; case "Blue": g.setColor(Color.BLUE); break; default: g.setColor(Color.BLACK); break; } Font font = new Font(fontName, fontStyle, fontSize); g.setFont(font); g.drawString(text, 50, 100); } private void outputString() { outputPanel.repaint(); } public static void main(String[] args) { SwingUtilities.invokeLater(() -> new Task21()); } } / Тести: package org.example; import org.junit.jupiter.api.Test; import javax.swing.*; import java.awt.*; import static org.junit.jupiter.api.Assertions.*; class Task21Test { @Test public void testConstructor() { Task21 frame = new Task21(); assertEquals("String Output App", frame.getTitle()); assertEquals(JFrame.EXIT_ON_CLOSE, frame.getDefaultCloseOperation()); assertEquals(BorderLayout.class, frame.getLayout().getClass()); } } / Завдання 28 package org.example; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; /** * Клас Task28 представляє вікно з програмою для переміщення прямокутника та зміни його кольору. */ public class Task28 extends JFrame { JPanel drawPanel; JComboBox<String> colorComboBox; JRadioButton leftRadioButton; JRadioButton upRadioButton; JRadioButton rightRadioButton; JRadioButton downRadioButton; int rectangleX = 150; int rectangleY = 150; Color rectangleColor = Color.BLACK; /** * Конструктор */ public Task28() { setTitle("Move Rectangle App"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLayout(new BorderLayout()); createOutputPanel(); createControlPanel(); pack(); setLocationRelativeTo(null); setVisible(true); } private void createOutputPanel() { drawPanel = new JPanel() { @Override protected void paintComponent(Graphics g) { super.paintComponent(g); drawRectangle(g); } }; drawPanel.setPreferredSize(new Dimension(300, 300)); drawPanel.setBackground(Color.WHITE); add(drawPanel, BorderLayout.CENTER); } /** * Малює прямокутник на панелі. * * @param g Об'єкт Graphics для малювання. */ private void drawRectangle(Graphics g) { g.setColor(rectangleColor); g.fillRect(rectangleX, rectangleY, 50, 50); } private void createControlPanel() { JPanel controlPanel = new JPanel(new FlowLayout()); JLabel colorLabel = new JLabel("Color:"); String[] colorOptions = {"Black", "Red", "Green", "Blue"}; colorComboBox = new JComboBox<>(colorOptions); colorComboBox.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { changeColor(); } }); leftRadioButton = new JRadioButton("Left"); upRadioButton = new JRadioButton("Up"); rightRadioButton = new JRadioButton("Right"); downRadioButton = new JRadioButton("Down"); ButtonGroup directionGroup = new ButtonGroup(); directionGroup.add(leftRadioButton); directionGroup.add(upRadioButton); directionGroup.add(rightRadioButton); directionGroup.add(downRadioButton); JButton moveButton = new JButton("Move"); moveButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { moveRectangle(); } }); controlPanel.add(colorLabel); controlPanel.add(colorComboBox); controlPanel.add(leftRadioButton); controlPanel.add(upRadioButton); controlPanel.add(rightRadioButton); controlPanel.add(downRadioButton); controlPanel.add(moveButton); add(controlPanel, BorderLayout.SOUTH); } /** * Змінює колір прямокутника відповідно до вибору користувача у комбобоксі. */ void changeColor() { String selectedColor = colorComboBox.getSelectedItem().toString(); switch (selectedColor) { case "Black": rectangleColor = Color.BLACK; break; case "Red": rectangleColor = Color.RED; break; case "Green": rectangleColor = Color.GREEN; break; case "Blue": rectangleColor = Color.BLUE; break; } drawPanel.repaint(); } /** * Зміщує прямокутник у вибраному напрямку. */ void moveRectangle() { if (leftRadioButton.isSelected()) { rectangleX -= 10; } else if (upRadioButton.isSelected()) { rectangleY -= 10; } else if (rightRadioButton.isSelected()) { rectangleX += 10; } else if (downRadioButton.isSelected()) { rectangleY += 10; } drawPanel.repaint(); } public static void main(String[] args) { SwingUtilities.invokeLater(() -> new Task28()); } } / Тести: package org.example; import org.junit.jupiter.api.Test; import java.awt.*; import static org.junit.jupiter.api.Assertions.*; class Task28Test { @Test public void testDrawPanelBackground() { Task28 app = new Task28(); assertEquals(Color.WHITE, app.drawPanel.getBackground()); } @Test public void testDrawRectangleInitialColor() { Task28 app = new Task28(); assertEquals(Color.BLACK, app.rectangleColor); } @Test public void testDrawRectangleColorChange() { Task28 app = new Task28(); app.colorComboBox.setSelectedIndex(1); // Select Red app.changeColor(); assertEquals(Color.RED, app.rectangleColor); } @Test public void testMoveRectangleForAllDirections() { Task28 app = new Task28(); app.leftRadioButton.setSelected(true); app.moveRectangle(); assertEquals(140, app.rectangleX); app.upRadioButton.setSelected(true); app.moveRectangle(); assertEquals(140, app.rectangleX); assertEquals(140, app.rectangleY); app.rightRadioButton.setSelected(true); app.moveRectangle(); assertEquals(150, app.rectangleX); assertEquals(140, app.rectangleY); app.downRadioButton.setSelected(true); app.moveRectangle(); assertEquals(150, app.rectangleX); assertEquals(150, app.rectangleY); } } /
Антиботан аватар за замовчуванням

29.02.2024 18:02-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!