In: Computer Science
in java
Write program that draws out a path based on the user input. The starting coordinates for the path is the middle of the DrawingPanel. Ask the user to enter an x and a y coordinate for a DrawingPanel. Your program will draw a line from the last coordinates to the current coordinates the user enters. If the user enters an x value or y value out of bounds of the DrawingPanel, then end the program.
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.Border;
public class DrawingPanelGUI{
private static final int PANEL_WIDTH = 600;
private static final int PANEL_HEIGHT = 400;
private static JFrame mainFrame;
private static JPanel mainPanel, inputPanel, drawPanel;
private static JLabel xLabel, yLabel;
private static JTextField xField, yField;
private static JButton drawButton;
public static void main(String[] args)
{
mainFrame = new JFrame("Draw Path");
mainPanel = new JPanel(new BorderLayout());
inputPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
xLabel = new JLabel("X Coordinate: ");
xField = new JTextField(5);
yLabel = new JLabel("Y Coordinate: ");
yField = new JTextField(5);
drawButton = new JButton("Draw");
inputPanel.add(xLabel);
inputPanel.add(xField);
inputPanel.add(yLabel);
inputPanel.add(yField);
inputPanel.add(drawButton);
Border border = BorderFactory.createLineBorder(Color.black);
drawPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
drawPanel.setBorder(border);
mainPanel.add(inputPanel, BorderLayout.NORTH);
mainPanel.add(drawPanel, BorderLayout.CENTER);
mainFrame.add(mainPanel);
mainFrame.setSize(PANEL_WIDTH, PANEL_HEIGHT);
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainFrame.setLocationRelativeTo(null);
mainFrame.setResizable(false);
mainFrame.setVisible(true);
// action listener for draw button
drawButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(xField.getText().equals("") ||
yField.getText().equals(""))
JOptionPane.showMessageDialog(null, "Please enter the x and y
coordinates!");
else
{
int x2 = Integer.parseInt(xField.getText().trim());
int y2 = Integer.parseInt(yField.getText().trim());
if(x2 > PANEL_WIDTH || y2 > PANEL_HEIGHT)
JOptionPane.showMessageDialog(null, "x and y coordinates should be
less than "
+ PANEL_WIDTH + " and " + PANEL_HEIGHT + " respectively!");
else
drawPath(x2, y2);
}
}
});
}
public static void drawPath(int x2, int y2)
{
int x1 = (int)drawPanel.getBounds().getCenterX();
int y1 = (int)drawPanel.getBounds().getCenterY();
Graphics g = drawPanel.getGraphics();
Rectangle r = drawPanel.getBounds();
g.setColor(drawPanel.getBackground());
g.fillRect(r.x, r.y, r.width, r.height);
g.setColor(Color.blue);
g.drawLine(x1, y1, x2, y2);
}
}
******************************************************************* SCREENSHOT ********************************************************