java 坐标画图_java panel 坐标 绘图

展开全部

import java.awt.Container;

import java.awt.Dimension;

import java.awt.FlowLayout;

import java.awt.Graphics2D;

import java.awt.Point;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.geom.Line2D;

import java.util.regex.Pattern;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.BevelBorder;

public class Test extends JFrame implements ActionListener { private JLabel lblFirstPoint = new JLabel("第一个点(x,y):");

private JTextField tfFirstPoint = new JTextField(10);

private JLabel lblSecondPoint = new JLabel("第二个点(x,y):");

private JTextField tfSecondPoint = new JTextField(10);

private JLabel lblThirdPoint = new JLabel("第三个点(x,y):");

private JTextField tfThirdPoint = new JTextField(10);

private JPanel pDrawPanel = new JPanel();

private JLabel lblResult = new JLabel();

private JButton btnDraw = new JButton("确定");

private Test() {

super("绘图");

this.setSize(400, 300);

this.setDefaultCloseOperation(EXIT_ON_CLOSE);

this.setExtendedState(MAXIMIZED_BOTH);

init();

}

private void init() {

Container c = this.getContentPane();

c.setLayout(new FlowLayout(FlowLayout.LEFT));

c.add(lblFirstPoint);

c.add(tfFirstPoint);

c.add(lblSecondPoint);

c.add(tfSecondPoint);

c.add(lblThirdPoint);

c.add(tfThirdPoint);

btnDraw.addActionListener(this);

c.add(btnDraw); c.add(lblResult); pDrawPanel.setBorder(new BevelBorder(1));

pDrawPanel.setPreferredSize(new Dimension(800, 600));

c.add(pDrawPanel);

}

public static void main(String[] args) {

Test t = new Test();

t.setVisible(true);

} @Override

public void actionPerformed(ActionEvent arg0) {

if (validateInput()) {

judgeResult();

}

} private void judgeResult() {

String strFirstPoint = tfFirstPoint.getText().trim();

String strSecondPoint = tfSecondPoint.getText().trim();

String strThirdPoint = tfThirdPoint.getText().trim();

String[] sFirstPoint = strFirstPoint.split("\\s*,\\s*");

Point p1 = new Point(Integer.parseInt(sFirstPoint[0]), Integer.parseInt(sFirstPoint[1]));

String[] sSecondPoint = strSecondPoint.split("\\s*,\\s*");

Point p2 = new Point(Integer.parseInt(sSecondPoint[0]), Integer.parseInt(sSecondPoint[1])); String[] sThirdPoint = strThirdPoint.split("\\s*,\\s*");

Point p3 = new Point(Integer.parseInt(sThirdPoint[0]), Integer.parseInt(sThirdPoint[1]));

if (p1.distance(p2) == 0 && p2.distance(p3) == 0) {

lblResult.setText("三点为同一点。");

} else {

if (isInSameLine(p1, p2, p3)) {

lblResult.setText("三点在同一直线上。");

} else {

lblResult.setText("三点构成一个三62616964757a686964616fe4b893e5b19e31333332633634角形。");

}

} Graphics2D g2 = (Graphics2D) pDrawPanel.getGraphics();

g2.draw(new Line2D.Double(p1, p2));

g2.draw(new Line2D.Double(p2, p3));

g2.draw(new Line2D.Double(p3, p1));

} private boolean isInSameLine(Point p1, Point p2, Point p3) {

if ((p1.getX() == p2.getX() && p2.getX() == p3.getX()) ||

(p1.getY() == p2.getY() && p2.getY() == p3.getY())){

return true;

} else {

if (p2.getY() == p1.getY()) {

if (((p2.getY() - p1.getY()) / (p3.getY() - p1.getY()) == (p2.getX() - p1.getX()) / (p3.getX() - p1.getX()))) {

return true;

}

} else {

if (((p3.getY() - p1.getY()) / (p2.getY() - p1.getY()) == (p3.getX() - p1.getX()) / (p2.getX() - p1.getX()))) {

return true;

}

}

return false;

}

} private boolean validateInput() {

if (tfFirstPoint.getText().trim().length() == 0) {

JOptionPane.showMessageDialog(this, "第一个点必须输入!", "错误", JOptionPane.ERROR_MESSAGE);

tfFirstPoint.requestFocus();

return false;

}

if (tfSecondPoint.getText().trim().length() == 0) {

JOptionPane.showMessageDialog(this, "第二个点必须输入!", "错误", JOptionPane.ERROR_MESSAGE);

tfSecondPoint.requestFocus();

return false;

}

if (tfThirdPoint.getText().trim().length() == 0) {

JOptionPane.showMessageDialog(this, "第三个点必须输入!", "错误", JOptionPane.ERROR_MESSAGE);

tfThirdPoint.requestFocus();

return false;

} Pattern p = Pattern.compile("^\\d+\\s*,\\s*\\d+$");

if (!p.matcher(tfFirstPoint.getText().trim()).matches()) {

JOptionPane.showMessageDialog(this, "第一个点输入内容不合法!", "错误", JOptionPane.ERROR_MESSAGE);

tfFirstPoint.requestFocus();

return false;

}

if (!p.matcher(tfSecondPoint.getText().trim()).matches()) {

JOptionPane.showMessageDialog(this, "第二个点输入内容不合法!", "错误", JOptionPane.ERROR_MESSAGE);

tfSecondPoint.requestFocus();

return false;

}

if (!p.matcher(tfThirdPoint.getText().trim()).matches()) {

JOptionPane.showMessageDialog(this, "第三个点输入内容不合法!", "错误", JOptionPane.ERROR_MESSAGE);

tfThirdPoint.requestFocus();

return false;

}

return true;

}}

本回答由网友推荐

2Q==

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的Java画图板示例: ```java import java.awt.*; import java.awt.event.*; import javax.swing.*; public class SimpleDraw extends JFrame implements ActionListener { private JButton clearBtn; private DrawArea drawArea; public SimpleDraw() { // 设置窗口标题 super("Simple Draw"); // 创建清除按钮 clearBtn = new JButton("Clear"); clearBtn.addActionListener(this); // 创建绘制区域 drawArea = new DrawArea(); // 将按钮和绘制区域添加到窗口中 Container c = getContentPane(); c.setLayout(new BorderLayout()); c.add(clearBtn, BorderLayout.NORTH); c.add(drawArea, BorderLayout.CENTER); // 设置窗口大小 setSize(600, 400); // 显示窗口 setVisible(true); } // 处理清除按钮的点击事件 public void actionPerformed(ActionEvent e) { if (e.getSource() == clearBtn) { drawArea.clear(); } } // 绘制区域类 class DrawArea extends JComponent { private Image image; private Graphics2D g2; public DrawArea() { // 添加鼠标事件监听器 addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { // 记录鼠标按下时的坐标 int x = e.getX(); int y = e.getY(); // 创建新的图像对象 image = createImage(getSize().width, getSize().height); g2 = (Graphics2D) image.getGraphics(); g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); clear(); g2.setPaint(Color.black); drawLine(x, y); } }); // 添加鼠标事件监听器 addMouseMotionListener(new MouseMotionAdapter() { public void mouseDragged(MouseEvent e) { // 绘制线条 drawLine(e.getX(), e.getY()); } }); } // 绘制线条 private void drawLine(int x, int y) { g2.drawLine(x, y, x, y); repaint(); } // 清除图像 public void clear() { g2.setPaint(Color.white); g2.fillRect(0, 0, getSize().width, getSize().height); g2.setPaint(Color.black); repaint(); } // 绘制图像 protected void paintComponent(Graphics g) { if (image == null) { image = createImage(getSize().width, getSize().height); g2 = (Graphics2D) image.getGraphics(); g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); clear(); } g.drawImage(image, 0, 0, null); } } public static void main(String[] args) { new SimpleDraw(); } } ``` 这个示例实现了一个简单的画图板,可以使用鼠标在绘制区域中绘制线条,并且可以使用清除按钮清除绘制区域中的内容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值