Как на языке программирования Java создать программу с использованием Swing и GroupLayout для построения графиков функций y=x2+5x-4 и y=x-1 в одних координатных осях с использованием checkBox для отображения каждого графика отдельно.
java
import javax.swing.*;
import java.awt.*;
public class Main extends JFrame {
public Main() {
initComponents();
}
private void initComponents() {
// Устанавливаем заголовок окна
setTitle("График функций");
// Устанавливаем операцию по умолчанию - закрытие окна
setDefaultCloseOperation(EXIT_ON_CLOSE);
// Устанавливаем менеджер компоновки
setLayout(new FlowLayout());
// Создаем компоненты интерфейса
JLabel label = new JLabel("Выберите функцию:");
JCheckBox checkbox1 = new JCheckBox("y = x^2 + 5x - 4");
JCheckBox checkbox2 = new JCheckBox("y = x - 1");
JButton button = new JButton("Построить график");
// Добавляем компоненты на окно
add(label);
add(checkbox1);
add(checkbox2);
add(button);
// Устанавливаем размер окна и делаем его видимым
setSize(300, 150);
setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new Main();
}
});
}
}
2. Создание графического компонента для отображения графика:
java
import javax.swing.*;
import java.awt.*;
public class GraphComponent extends JPanel {
private boolean showFunction1 = false;
private boolean showFunction2 = false;
public void setShowFunction1(boolean showFunction1) {
this.showFunction1 = showFunction1;
repaint();
}
public void setShowFunction2(boolean showFunction2) {
this.showFunction2 = showFunction2;
repaint();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
// Устанавливаем цвет и толщину линий
g.setColor(Color.RED);
g.setStroke(new BasicStroke(2));
// Получаем размеры компонента
int width = getWidth();
int height = getHeight();
// Вычисляем масштабы функций
double minX = -10;
double maxX = 10;
double minY = -10;
double maxY = 10;
if (showFunction1) {
// Рисуем график первой функции
for (int x = 0; x < width; x++) {
double xValue = x * (maxX - minX) / width + minX;
double yValue = xValue*xValue + 5*xValue - 4;
int y = (int) (height - (yValue - minY) / (maxY - minY) * height);
g.drawLine(x, y, x, y);
}
}
// Сбрасываем цвет и толщину линий
g.setColor(Color.BLUE);
g.setStroke(new BasicStroke(2));
if (showFunction2) {
// Рисуем график второй функции
for (int x = 0; x < width; x++) {
double xValue = x * (maxX - minX) / width + minX;
double yValue = xValue - 1;
int y = (int) (height - (yValue - minY) / (maxY - minY) * height);
g.drawLine(x, y, x, y);
}
}
}
}
3. Изменение класса Main для использования GraphComponent и ActionListener:
java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Main extends JFrame {
private GraphComponent graphComponent;
public Main() {
initComponents();
}
private void initComponents() {
// Устанавливаем заголовок окна
setTitle("График функций");
// Устанавливаем операцию по умолчанию - закрытие окна
setDefaultCloseOperation(EXIT_ON_CLOSE);
// Устанавливаем менеджер компоновки
setLayout(new FlowLayout());
// Создаем компоненты интерфейса
JLabel label = new JLabel("Выберите функцию:");
JCheckBox checkbox1 = new JCheckBox("y = x^2 + 5x - 4");
JCheckBox checkbox2 = new JCheckBox("y = x - 1");
JButton button = new JButton("Построить график");
// Создаем графический компонент для отображения графика
graphComponent = new GraphComponent();
// Добавляем ActionListener для кнопки
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
graphComponent.setShowFunction1(checkbox1.isSelected());
graphComponent.setShowFunction2(checkbox2.isSelected());
}
});
// Добавляем компоненты на окно
add(label);
add(checkbox1);
add(checkbox2);
add(button);
add(graphComponent);
// Устанавливаем размер окна и делаем его видимым
setSize(400, 300);
setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new Main();
}
});
}
}
В этой программе создается пользовательский интерфейс с помощью классов JFrame, JPanel, JLabel, JCheckBox и JButton из библиотеки Swing. График функций рисуется с помощью класса GraphComponent, который наследуется от класса JPanel и переопределяет метод paintComponent для рисования графика.
Метод initComponents() инициализирует все компоненты интерфейса и устанавливает их на окно. ActionListener для кнопки "Построить график" вызывает методы setShowFunction1() и setShowFunction2() класса GraphComponent для обновления отображения графиков в зависимости от состояния флажков.
В методе main() создается объект класса Main и вызывается метод initComponents() внутри блока кода, выполняющегося с помощью метода SwingUtilities.invokeLater() для обеспечения создания и отображения интерфейса в главном потоке событий Swing.
В результате выполнения этой программы будет создано окно приложения с возможностью выбора отображения графиков функций y=x^2+5x-4 и y=x-1 с использованием флажков checkBox и кнопки "Построить график". При клике на кнопку "Построить график" будут отображаться только те графики, для которых установлен флажок.
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет