效果图:
实现:
Triangle,Java的Color类,javax.swing中的JFrame和javax.swing中的JComponent、JPanel(可选);生成如上图所示的图形。
要求:
- 创建一个JFrame对象
- 给JFrame对象设置底色为黄色,大小为500*600,title bar用“GUI”
- 创建第一个Triangle对象,该对象要求颜色为红色,边长使用随机数生成,范围不能超过JFrame对象的大小,角尖朝上,使用JFrame的add()方法,居中放置在窗口中。
- 创建第二个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 );
}
}