Как задать координаты Rectangle2D из текстового поля? - Java
Формулировка задачи:
Вот и вопрос.
Сам прямоугольник рисуется в панеле SPanel, в SPanel2 текстовое поле из которого введенная цифра прибавляется к координатам, в итоге прямоугольник должен перерисовываться по новым координатам, а нет как был так и остается исходя из ранее заданных координат
как сделать чтобы перерисовывался по новым координатам?
Листинг программы
- import java.awt.*;
- import java.awt.event.*;
- import java.awt.BorderLayout;
- import java.awt.Color;
- import java.awt.Dimension;
- import java.awt.FlowLayout;
- import java.awt.Font;
- import java.awt.GridBagLayout;
- import javax.swing.JLabel;
- import javax.swing.JPanel;
- import javax.swing.UIManager;
- import javax.swing.border.Border;
- import java.util.*;
- import java.util.Scanner;
- import java.io.*;
- import javax.swing.*;
- import javax.swing.JFrame.*;
- import javax.swing.JTextField.*;
- import java.awt.BorderLayout;
- import java.awt.FlowLayout;
- import java.nio.*;
- import java.nio.channels.*;
- import java.nio.file.*;
- import java.net.*;
- import java.text.*;
- import javax.swing.text.*;
- import java.awt.geom.*;
- public class drc extends JFrame {
- public static double leftX;
- public static double topY;
- public static double width;
- public static double height;
- class DrawComponent extends JComponent
- {
- private static final int DEFAULT_WIDTH = 300;
- private static final int DEFAULT_HEIGHT = 300;
- public void paintComponent(Graphics g)
- {
- Graphics2D g2 = (Graphics2D) g;
- double leftX = 5;
- double topY = 15;
- double width = 20;
- double height = 20;
- Rectangle2D rect2 =
- new Rectangle2D.Double(leftX, topY, width, height);
- g2.draw(rect2);
- } }
- drc() {
- JFrame MainFrame = new JFrame("");
- MainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- MainFrame.setSize(600, 400);
- JPanel MainPanel = new JPanel();
- MainPanel.setBorder(BorderFactory.createTitledBorder("MainPanel"));
- MainPanel.setLayout(new BoxLayout(MainPanel, BoxLayout.X_AXIS));
- JPanel SPanel = new JPanel();
- SPanel.setBorder(BorderFactory.createLineBorder(Color.RED, 3));
- SPanel.setLayout(new BorderLayout());
- JPanel SPanel2 = new JPanel();
- SPanel2.setBorder(BorderFactory.createTitledBorder("Текстовое поле"));
- SPanel2.setLayout(new BorderLayout());
- MainPanel.add(SPanel);
- MainPanel.add(SPanel2);
- SPanel.add(new DrawComponent());
- JTextField STextField = new JTextField("1", 10);
- STextField.addKeyListener(new KeyListener() {
- public void keyPressed(KeyEvent ea) {
- }
- public void keyReleased(KeyEvent ea) {
- String Sstr = STextField.getText();
- Double Sdo = Double.valueOf(Sstr);
- leftX = 5 + Sdo;
- topY = 15 + Sdo;
- width = 20 + Sdo;
- height = 20 + Sdo;
- SPanel.update(SPanel.getGraphics());
- }
- public void keyTyped(KeyEvent ea) {
- }
- });
- SPanel2.add(STextField);
- MainFrame.add(MainPanel);
- MainFrame.setVisible(true);
- }
- public static void main(String args[]) {
- SwingUtilities.invokeLater(new Runnable() {
- public void run() {
- new drc();
- }
- });
- }
- }
Решение задачи: «Как задать координаты Rectangle2D из текстового поля?»
textual
Листинг программы
- public class drc extends JFrame {
- double leftX = 5;
- double topY = 15;
- double width = 20;
- double height = 20;
- class DrawComponent extends JComponent
- {
- private static final int DEFAULT_WIDTH = 300;
- private static final int DEFAULT_HEIGHT = 300;
- public void paintComponent(Graphics g)
- {
- Graphics2D g2 = (Graphics2D) g;
- Rectangle2D rect2 =
- new Rectangle2D.Double(leftX, topY, width, height);
- g2.draw(rect2);
- } }
- drc() {
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д