Java 根据输入三边绘制三角形
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.AdjustmentEvent;
import java.awt.event.AdjustmentListener;
import java.util.Scanner;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.ScrollPaneConstants;
public class DrawTriangle
{
    JFrame jf;
    int a,b,c;
    int xs=100,ys=100;  //a边始点坐标
    int x,y//终点坐标
    String result="请输入三边!";
    Font f=new Font("黑体", Font.ITALIC, 24); 
    Font fb=new Font("宋体",Font.PLAIN,14);
    JLabel jl;
    JLabel jlx;
    JLabel jly;
    JTextField jfx;
    JTextField jfy;
    JButton jb;
    JPanel jp1,jp2;
    JScrollPane js;
   
    public    DrawTriangle()
    {
        jf=new JFrame();
        jf.setSize(800,600);
        jf.setVisible(true);
        jf.setTitle("画三角形");
        jf.setLocationRelativeTo(null);
        jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);
        jl=new JLabel("改变起点A坐标:");
        jlx=new JLabel("x");
        jly=new JLabel("y");
        jfx=new JTextField("100");
        jfy=new JTextField("100");
        jb=new JButton("点击开始画三角形");
        jp1=new JPanel();
        jp2=new JPanel();
        js=new JScrollPane();
       
        jf.setLayout(null);
        jp1.setPreferredSize(new Dimension(600,600));  //设置绘图面板初始大小
        js.setBounds(0,0,jf.getWidth()-15,520);  //设置滚动面板的位置和大小
    //    js.add(jp1);
        js.setViewportView(jp1);  //将绘图面板加入滚动面板
        js.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS );
        js.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
      jp2.setBounds(0, 520,600, 40); //控制面板
     
        jl.setBounds(50, 520,120, 30);
      jlx.setBounds(170, 520,30, 30);
      jfx.setBounds(200, 520,90, 30);
      jly.setBounds(290, 520,30, 30);
      jfy.setBounds(320, 520,90, 30);
      jb.setBounds(420, 520,120, 40);   
        jp2.add(jl);
        jp2.add(jlx);
        jp2.add(jfx);
        jp2.add(jly);
        jp2.add(jfy);
        jp2.add(jb);
       
        jf.add(js);  //窗体内加入js滚动面板
        jf.add(jp2);  //窗体内加入操作面板
       
   
        jb.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent arg0)
            {
                jp1.setPreferredSize(new Dimension(xs+maxInt(), ys+maxInt())); //重置绘图面板大
                Graphics g=jp1.getGraphics();
                g.setFont(f);
                g.clearRect(0,0, jp1.getWidth(),jp1.getHeight());  //以背景填充JFrame,以便重新绘制图形
                if(!jfx.getText().isEmpty()&&!jfy.getText().isEmpty())
                {
                    xs=Integer.parseInt(jfx.getText().toString());
                    ys=Integer.parseInt(jfy.getText().toString());
                }
                paint(g);  //将画笔g传至自定义的画画函数
            }
        });
       
        JScrollBar bar = js.getHorizontalScrollBar(); // 返回控制视口的水平视图位置的水平滚动条
        JScrollBar bar1 = js.getVerticalScrollBar(); // 返回控制视口垂直视图位置的垂直滚动条
        //滚动重绘
        bar.addAdjustmentListener(new AdjustmentListener (){
            public void adjustmentValueChanged(AdjustmentEvent e) {
                jp1.setPreferredSize(new Dimension(xs+maxInt(), ys+maxInt())); //重置绘图面板大
                Graphics g=jp1.getGraphics();  //在面板上创建画笔
                g.setFont(f);
                g.clearRect(0,0, jp1.getWidth(),jp1.getHeight());  //以背景填充JFrame,以便重新绘制图形
                if(!jfx.getText().isEmpty()&&!jfy.getText().isEmpty())
                {
                    xs=Integer.parseInt(jfx.getText().toString());
                    ys=Integer.parseInt(jfy.getText().toString());
                }
                paint(g);  //将画笔g传至自定义的画画函数
               
            }
        }); // 监听滚动条模型发生更改
        //滚动
        bar1.addAdjustmentListener(new AdjustmentListener (){
            public void adjustmentValueChanged(AdjustmentEvent e) {
                jp1.setPreferredSize(new Dimension(xs+maxInt(), ys+maxInt())); //重置绘图面板大小
                Graphics g=jp1.getGraphics();
                g.setFont(js控制滚动条f);
                g.clearRect(0,0, jp1.getWidth(),jp1.getHeight());  //以背景填充JFrame,以便重新绘制图形
                if(!jfx.getText().isEmpty()&&!jfy.getText().isEmpty())
                {
                    xs=Integer.parseInt(jfx.getText().toString());
                    ys=Integer.parseInt(jfy.getText().toString());
                }
                paint(g);  //将画笔g传至自定义的画画函数
               
            }
        }); // 监听滚动条模型发生更改
        }
    public int maxInt()
    {
        return a>b?(a>c?a:c):(b>c?b:c);
    }
   
    //能否到坐标
    public boolean isTriangle()
    {
        //(xs,xs)a边始点
        for(int i=xs-maxInt();i<=xs+maxInt();i++)
          for(int j=ys+1;j<=ys+maxInt();j++) //j>xs使b,c边位于a边下方
              {
              //Math.sqrt必须转换为整型,才能比较(采用坐标距离公式联立二元一次方程求解坐标)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。