資源簡介
JAVA繪制函數圖像工具,學校的一個java大作業

代碼片段和文件信息
/**
?*??@author:?LI?LINGXIAO
?*??@school:?JU
?*??
?*??這是一個簡單的函數顯示工具,用戶輸入簡單函數,程序自動畫出函數圖像
?*??支持常數e?sin?cos?tan?ln?^?加減乘除括號以及它們的復合運算
?*??只能有一個變量,而且必須是x,比如sinx?敲擊回車結束輸入
?*??顯示出函數圖像后,可以通過拖動滑塊來改變圖像顯示的比例大小
?*??可以切換函數線條顏色
?**/
import?java.awt.*;
import?java.awt.event.ActionEvent;
import?java.awt.event.ActionListener;
import?java.awt.event.MouseEvent;
import?java.awt.event.MouseMotionAdapter;
import?java.text.DecimalFormat;
import?java.util.HashMap;
import?java.util.Map;
import?java.util.Stack;
import?java.util.StringTokenizer;
import?javax.swing.*;
import?javax.swing.event.ChangeEvent;
import?javax.swing.event.ChangeListener;
public?class?FunctionDraw?extends?Jframe?{
JTextField?txt1;?//?顯示光標此時的坐標位置的文本區
JTextField?txt2;?//?輸入函數表達式的文本區
JLabel?label;?//?提示標簽
JLabel?colorlb;//顏色標簽
JLabel?zerolb;?//?原點標簽
JSlider?slider;?//?調整圖片放縮比例的滑塊
JPanel?panel;?//?包含組件的面板
DrawFunPanel?drawpanel;?//?繪制函數圖像的面板
int?SliderValue;?//?滑塊所在的刻度
Cursor?crossCursor?handCursor;?//?鼠標光標
int?W?H;?//?窗體的長和寬
public?FunctionDraw(String?title){
super(title);?//?設置窗體標題
W?=?800;
H?=?600;
//?創建并設置提示標簽
label?=?new?JLabel(“請直接輸入函數的表達式,如sinx“);
label.setFont(new?Font(“楷體“?Font.BOLD?15));
label.setBounds((int)(W/12)3025020);
//?創建并設置顏色選擇標簽
colorlb?=?new?JLabel(“線條顏色“);
colorlb.setFont(new?Font(“楷體“?Font.BOLD?15));
colorlb.setBounds(700?(int)(H*0.02)?10020);
//?創建并設置文本區
txt1?=?new?JTextField(40);
txt2?=?new?JTextField(40);
txt1.setEditable(false);
txt1.setBounds((int)(W/12)525025);
txt2.setBounds((int)(W/12)5025025);
//?設置文本區輸入監聽
txt2.addActionListener(new?ActionListener()?{
@Override
public?void?actionPerformed(ActionEvent?e)?{
//?TODO?Auto-generated?method?stub
drawpanel.getInput(e.getActionCommand());
drawpanel.repaint();
}
});
//?設置文本區鼠標移動監聽,顯示當前坐標
this.addMouseMotionListener(new?MouseMotionAdapter()?{
@Override
public?void?mouseMoved(MouseEvent?e)?{
//?TODO?Auto-generated?method?stub
super.mouseMoved(e);
double?X?Y;?//?相對坐標
double?sx?sy;?//?applet中實際坐標
sx?=?e.getX();
sy?=?e.getY();
//?坐標變換
X?=?(double)(sx?-?0.5?*?W?-8)?/?SliderValue;?//?減去邊框占8像素
Y?=?(double)-(sy?-?0.4?*?H?-?30)?/?SliderValue;?//?減去標題欄占30像素
//?設置輸出格式
DecimalFormat?twoDigit?=?new?DecimalFormat(“0.00“);
txt1.setText(“當前的坐標:“?+?“x=“?+?twoDigit.format(X)?+?“??y=“?+?twoDigit.format(Y));
txt1.setFont(new?Font(“楷體“?Font.PLAIN?15));
//?設置光標圖形
crossCursor?=?new?Cursor(Cursor.CROSSHAIR_CURSOR);
handCursor?=?new?Cursor(Cursor.HAND_CURSOR);
if(sx?>?0?&&?sx??0?&&?sy?0.8?*?H+30)
setCursor(crossCursor);
else
setCursor(handCursor);
}
});
//?創建并設置滑塊
slider?=?new?JSlider(JSlider.HORIZONTAL?0?100?50);
slider.setPaintLabels(true);?//?添加默認刻度標簽
slider.setPaintTicks(true);?//?添加刻度標記
slider.setMajorT
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????422824??2017-06-18?13:22??1030415320李凌瀟\1030415320李凌瀟.docx
?????文件???????1895??2017-06-18?13:16??1030415320李凌瀟\DrawFunPanel.class
?????文件????????849??2017-06-18?13:16??1030415320李凌瀟\FunctionDraw$1.class
?????文件???????1886??2017-06-18?13:16??1030415320李凌瀟\FunctionDraw$2.class
?????文件????????962??2017-06-18?13:16??1030415320李凌瀟\FunctionDraw$3.class
?????文件???????1182??2017-06-18?13:16??1030415320李凌瀟\FunctionDraw$4.class
?????文件???????4168??2017-06-18?13:16??1030415320李凌瀟\FunctionDraw.class
?????文件??????12848??2017-06-17?11:09??1030415320李凌瀟\FunctionDraw.java
?????文件???????5255??2017-06-18?13:16??1030415320李凌瀟\FunctionValue.class
?????目錄??????????0??2017-06-18?13:23??1030415320李凌瀟
-----------?---------??----------?-----??----
???????????????451869????????????????????10
- 上一篇:java打磚塊
- 下一篇:Java畫面精美的簡易聊天室
評論
共有 條評論