COM6516-Week10

栏目: Java · 发布时间: 7年前

MyFrame.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class MyFrame extends JFrame implements ActionListener {
	private MyPanel drawingPanel;

	private MyFrame() {
		int width = (int) (Toolkit.getDefaultToolkit().getScreenSize().getWidth() / 2.0);
		int height = (int) (width / 16.0 * 9.0);
		setSize(width, height);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setLocationRelativeTo(null);

		//For better looks.
		try {
			UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
		} catch (Exception e) {
			e.printStackTrace();
		}

		drawingPanel = new MyPanel();
		drawingPanel.setPolygon(5);
		Container contentPane = this.getContentPane();
		contentPane.add(drawingPanel, BorderLayout.CENTER);

		JPanel columnOfButtons = new JPanel(new GridLayout(8, 1));
		ButtonGroup buttonGroup = new ButtonGroup();
		for (int i = 3; i < 10; i++) {
			makeRadioButton(columnOfButtons, String.valueOf(i), buttonGroup, this);
		}

		JButton exit = new JButton("Exit");
		exit.addActionListener(this);
		columnOfButtons.add(exit);

		contentPane.add(columnOfButtons, BorderLayout.EAST);

		setVisible(true);
	}

	public static void main(String[] args) {
		javax.swing.SwingUtilities.invokeLater(MyFrame::new);
	}

	private void makeRadioButton(JPanel p, String name, ButtonGroup group, ActionListener target) {
		JRadioButton b = new JRadioButton(name);
		group.add(b);
		// add it to the specified JPanel and make the JPanel listen
		p.add(b);
		b.addActionListener(target);
	}

	public void actionPerformed(ActionEvent e) {
		// Do the appropriate thing depending on which button is pressed.
		// Use the getActionCommand() method to identify the button.
		switch (e.getActionCommand()) {
			case "Exit":
				System.exit(0);
			case "3":
				drawingPanel.setPolygon(3);
				break;
			case "4":
				drawingPanel.setPolygon(4);
				break;
			case "5":
				drawingPanel.setPolygon(5);
				break;
			case "6":
				drawingPanel.setPolygon(6);
				break;
			case "7":
				drawingPanel.setPolygon(7);
				break;
			case "8":
				drawingPanel.setPolygon(8);
				break;
			case "9":
				drawingPanel.setPolygon(9);
				break;
		}
	}

}
MyPanel.java
/*
 * Developed by Neo on 26/11/18 15:37.
 * Last modified 17/11/17 14:21.
 * Copyright (c) 2018. All rights reserved.
 */

import javax.swing.*;
import java.awt.*;

public class MyPanel extends JPanel {
	private int sides = 0;

	void setPolygon(int sides) {
		this.sides = sides;
		this.repaint();
	}

	@Override
	protected void paintComponent(Graphics g) {
		super.paintComponent(g);

		Graphics2D g2 = (Graphics2D) g;

		g2.setColor(Color.RED);

		// Make text and shapes appear smoother
		g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

		if (sides == 0) sides = 5;
		int[] x = new int[sides];
		int[] y = new int[sides];

		int width = getWidth();
		int height = getHeight();

		int r = (width > height ? height : width) / 3;

		for (int i = 0; i < sides; i++) {
			x[i] = (int) (width / 2 + r * Math.cos(2 * Math.PI / sides * i));
			y[i] = (int) (height / 2 + r * Math.sin(2 * Math.PI / sides * i));
		}
		Shape shape = new Polygon(x, y, sides);

		g2.draw(shape);
	}
}

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

不是为了快乐

不是为了快乐

宗萨蒋扬钦哲仁波切 / 姚仁喜 / 深圳报业集团出版社 / 2013-1 / 38.00元

前行修持是一套完整的实修系统,它既是一切佛法修持的根基,又囊括了所有修持的精华,以及心灵之道上所需的一切;既适合入门者打造学佛基本功,也是修行人需要终生修持的心法。书中除了实际的方法指导之外,还不断启发佛法的珍贵与修持的必要,并处处可见对学佛者的鼓舞和纠正,其最终的用心,是让我们踏上不间断的修持之路,真正转化我们僵硬、散乱和困惑的心。 在现代人看来,快乐,理应是最值得追求的目标。我们希望生活......一起来看看 《不是为了快乐》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具