Как задать координаты 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() {

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.083 из 5
Похожие ответы