package yj;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
public class Window {
public JFrame frame;
Draw sin = new Draw(1);
Draw cos = new Draw(2);
Draw tan = new Draw(3);
Draw x = new Draw(4);
JPanel panel = new JPanel();
JPanel panel_1 = new JPanel();
JPanel panel_2 = new JPanel();
Panel panel_sin = new Panel();
Panel panel_cos = new Panel();
Panel panel_tan = new Panel();
Panel panel_x = new Panel();
JCheckBox rdbtnSinX = new JCheckBox("Sin x");
JCheckBox rdbtnCosX = new JCheckBox("Cos x");
JCheckBox rdbtnTanX = new JCheckBox("Tan x");
JCheckBox rdbtnX = new JCheckBox("x");
// Panel infoTable = new Panel();
Thread DrawCos1 = new Thread(cos);
Thread DrawSin2 = new Thread(sin);
Thread DrawTan3 = new Thread(tan);
Thread DrawX4 = new Thread(x);
private static int p_width;
private static int p_height;
public static int getP_width() {
return p_width;
}
public static int getP_height() {
return p_height;
}
public Window() {
initialize();
DrawCos1.start();
DrawTan3.start();
DrawSin2.start();
DrawX4.start();
}
private void initialize() {
frame = new JFrame("动态曲线绘制程序");
frame.setBackground(Color.WHITE);
panel.setBackground(Color.WHITE);
panel_sin.setBackground(Color.WHITE);
panel_cos.setBackground(Color.WHITE);
panel_tan.setBackground(Color.WHITE);
panel_x.setBackground(Color.WHITE);
frame.getContentPane().add(panel, BorderLayout.NORTH);
panel.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
panel_1.setBackground(Color.WHITE);
frame.getContentPane().add(panel_1, BorderLayout.WEST);
panel_1.setLayout(new GridLayout(0, 1, 0, 0));
rdbtnSinX.setBackground(new Color(255, 255, 255));
rdbtnSinX.setName("sin");
rdbtnSinX.addItemListener(new onCheck(rdbtnSinX));
panel_1.add(rdbtnSinX);
rdbtnCosX.setBackground(new Color(255, 255, 255));
rdbtnCosX.setName("cos");
rdbtnCosX.addItemListener(new onCheck(rdbtnCosX));
panel_1.add(rdbtnCosX);
rdbtnTanX.setBackground(new Color(255, 255, 255));
rdbtnTanX.setName("tan");
rdbtnTanX.addItemListener(new onCheck(rdbtnTanX));
panel_1.add(rdbtnTanX);
rdbtnX.setBackground(new Color(255, 255, 255));
rdbtnX.setName("x");
rdbtnX.addItemListener(new onCheck(rdbtnX));
panel_1.add(rdbtnX);
// 分区
frame.getContentPane().add(panel_2, BorderLayout.CENTER);
panel_2.setLayout(new GridLayout(0, 1, 0, 0));
panel_sin.setLayout(new CardLayout(0, 0));
panel_cos.setLayout(new CardLayout(0, 0));
panel_tan.setLayout(new CardLayout(0, 0));
panel_x.setLayout(new CardLayout(0, 0));
panel_2.add(panel_sin);
panel_2.add(panel_cos);
panel_2.add(panel_tan);
panel_2.add(panel_x);
}
class Panel extends JPanel {
public Panel() {
super();
}
@Override
public void paint(Graphics g) {
super.paint(g);
this.setBackground(Color.WHITE);
p_width = this.getWidth();
p_height = this.getHeight();
g.setColor(new Color(123, 213, 50));
int x = p_width;
int y = p_height;
// 把区域分割开来
g.drawLine(0, 0, x, 0);
g.drawLine(0, 0, 0, y);
g.drawLine(0, y, x - 1, y);
g.drawLine(x - 1, 0, x - 1, y);
}
}
class onCheck implements ItemListener {
JCheckBox mBox;
public onCheck(JCheckBox mBox) {
this.mBox = mBox;
}
@Override
public void itemStateChanged(ItemEvent arg0) {
switch (mBox.getName()) {
case "sin": {
sinChecked();
break;
}
case "cos": {
cosChecked();
break;
}
case "tan": {
tanChecked();
break;
}
case "x": {
xChecked();
break;
}
}
}
private void sinChecked() {
if (rdbtnSinX.isSelected()) {
DrawSin2.resume();
panel_sin.add(sin);
panel_sin.updateUI();
} else {
if (DrawSin2.isAlive())
DrawSin2.suspend();
panel_sin.remove(sin);
panel_sin.updateUI();
}
}
private void cosChecked() {
if (rdbtnCosX.isSelected()) {
DrawCos1.resume();
panel_cos.add(cos);
panel_cos.updateUI();
} else {
if (DrawCos1.isAlive())
DrawCos1.suspend();
panel_cos.remove(cos);
panel_cos.updateUI();
}
}
private void tanChecked() {
if (rdbtnTanX.isSelected()) {
DrawTan3.resume();
panel_tan.add(tan);
panel_tan.updateUI();
} else {
if (DrawTan3.isAlive())
DrawTan3.suspend();
panel_tan.remove(tan);
panel_tan.updateUI();
}
}
private void xChecked() {
if (rdbtnX.isSelected()) {
DrawX4.resume();
panel_x.add(x);
panel_x.updateUI();
} else {
if (DrawX4.isAlive())
DrawX4.suspend();
panel_x.remove(x);
panel_x.updateUI();
}
}
}
}
华理java曲线系统大作业源码
5星 · 超过95%的资源 需积分: 12 142 浏览量
2022-06-27
15:13:04
上传
评论 4
收藏 3KB ZIP 举报
菜菜在努力
- 粉丝: 0
- 资源: 3
最新资源
- ### 词向量的介绍、使用技巧和优缺点的文章
- 基于STM32F103CBT6单片机GC65+MP2625+CC1101 GPSTrack模块板硬件(原理图+PCB)工程文件
- ### 通道处理过程模拟概念、优缺点和使用技巧
- ### MyBatis动态SQL介绍说明、使用技巧和优缺点
- 上传下载仿163网盘无刷新文件上传 for Jsp-fileupload-jsp.rar
- VMware Workstation业界非常稳定且安全的桌面虚拟机软件-计算机上运行多个操作系统,支持Windows、DOS等
- 基于STM8L101F3P6单片机+LY2508A33P+CC1100遥控器硬件(原理图+PCB)工程文件.zip
- 上传下载WAP图铃下载系统-unimg.rar
- YTX-0.1.0-Win
- 上传下载ExtJS 2.2 开源网络硬盘系统-dogdisk.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论5