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小时内删除。
发表评论