Как задать координаты 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() {
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д