GUI程序-三角形(JAVA程序设计)

效果图:

 实现:

         Triangle,Java的Color类,javax.swing中的JFrame和javax.swing中的JComponent、JPanel(可选);生成如上图所示的图形。

要求:

  1. 创建一个JFrame对象
  2. 给JFrame对象设置底色为黄色,大小为500*600,title bar用“GUI”
  3. 创建第一个Triangle对象,该对象要求颜色为红色,边长使用随机数生成,范围不能超过JFrame对象的大小,角尖朝上,使用JFrame的add()方法,居中放置在窗口中。
  4. 创建第二个Triangle对象,颜色为蓝色,该三角形边长是红三角形的一半,角尖朝下,放置在红三角形中间。
//Driver.java
import java.awt.*;
import javax.swing.*;
import java.util.Random;

public class Driver
{
    public static void main( String[] args )
    {
        // WRITE CODE HERE (AND DELETE THIS)
    	
    	//创建Frame窗体
		JFrame frame = new JFrame();
		frame.setTitle("GUI");		
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		//实例化一个面板
		JPanel primary = new JPanel();
		primary.setBackground(Color.yellow);//面板颜色		
		primary.setPreferredSize(new Dimension(500,600));//面板大小
		
		//生成随机数
		Random rand = new Random();
		int size = rand.nextInt(300)+100;	
		
		//绘制蓝色三角形
		Triangle trgA;				
		trgA = new Triangle(250-size/4,300,size/2,size/2,2);
		trgA.setBackground(Color.blue);
		frame.add(trgA);
		
		//绘制红色三角形
		Triangle trgB;			
		trgB = new Triangle(250-size/2,300-size/2,size,size,1);
		trgB.setBackground(Color.red);
		frame.add(trgB);
			
		frame.getContentPane().add(primary);
		frame.pack();
		frame.setVisible(true);//设置窗体是否可见
    }
}
//Triangle.java
import javax.swing.JComponent;
import java.awt.Color;
import java.awt.Graphics;

@SuppressWarnings( "serial" )
public class Triangle extends JComponent
{
    private boolean up = false;
    
    
    public Triangle( int x, int y, int w, int h, int dir )
    {
        super();
        setBounds( x, y, w, h );
        setBackground( Color.black );
        up = ( dir == 1 );
    }   

    public void paint( Graphics g )
    {
        g.setColor( getBackground() );
        int[] xArr = null;
        int[] yArr = null;
        if ( up )
        {
            xArr = new int[] { 0, ( getWidth() / 2 ), getWidth() };
            yArr = new int[] { getHeight(), 0, getHeight() };
        }
        else
        {
            xArr = new int[] { 0, ( getWidth() / 2 ), getWidth() };
            yArr = new int[] { 0, getHeight(), 0 };
        }
        g.fillPolygon( xArr, yArr, 3 );
        paintChildren( g );
    }
}
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值