左边是绘图面板,右边有一个滑杆用来控制角度!使一个点围绕另一个点画直线!怎么就有问题呢?!本人使初学者,这个问题可能比较弱,还望大家不要笑话:)
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.*;
import javax.swing.event.*;class myPane
extends JPanel {
int x1 = 300;
int y1 = 300;
int x2;
int y2;
int Angle; public myPane() {
x2 = (int) (x1 + 200 * Math.cos(this.getAngle()));
y2 = (int) (y1 + 200 * Math.sin(this.getAngle()));
} public void setAngle(int a) {
Angle = a;
}
public int getAngle() {
return Angle;
} public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawLine(x1, y1, x2, y2);
}}public class Applet1
extends JApplet {
private boolean isStandalone = false;
myPane p = new myPane();
JPanel control = new JPanel();
JSlider slider = new JSlider(0, 360, 30);
//Get a parameter value
public String getParameter(String key, String def) {
return isStandalone ? System.getProperty(key, def) :
(getParameter(key) != null ? getParameter(key) : def);
} //Construct the applet
public Applet1() {
} //Initialize the applet
public void init() {
try {
jbInit();
}
catch (Exception e) {
e.printStackTrace();
}
} //Component initialization
private void jbInit() throws Exception {
this.setSize(new Dimension(800, 600)); Container contentPane = getContentPane();
contentPane.setLayout(new BorderLayout());
contentPane.add(p, BorderLayout.CENTER);
contentPane.add(control, BorderLayout.EAST);
control.add(slider);
slider.setMajorTickSpacing(90);
slider.setMinorTickSpacing(30);
slider.setPaintLabels(true);
slider.setPaintLabels(true);
slider.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
p.setAngle(slider.getValue());
p.repaint();
}
}
);
} //Get Applet information
public String getAppletInfo() {
return "Applet Information";
} //Get parameter info
public String[][] getParameterInfo() {
return null;
} //static initializer for setting look & feel
static {
try {
//UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
//UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
}
catch (Exception e) {
}
}
}
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.*;
import javax.swing.event.*;class myPane
extends JPanel {
int x1 = 300;
int y1 = 300;
int x2;
int y2;
int Angle; public myPane() {
x2 = (int) (x1 + 200 * Math.cos(this.getAngle()));
y2 = (int) (y1 + 200 * Math.sin(this.getAngle()));
} public void setAngle(int a) {
Angle = a;
}
public int getAngle() {
return Angle;
} public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawLine(x1, y1, x2, y2);
}}public class Applet1
extends JApplet {
private boolean isStandalone = false;
myPane p = new myPane();
JPanel control = new JPanel();
JSlider slider = new JSlider(0, 360, 30);
//Get a parameter value
public String getParameter(String key, String def) {
return isStandalone ? System.getProperty(key, def) :
(getParameter(key) != null ? getParameter(key) : def);
} //Construct the applet
public Applet1() {
} //Initialize the applet
public void init() {
try {
jbInit();
}
catch (Exception e) {
e.printStackTrace();
}
} //Component initialization
private void jbInit() throws Exception {
this.setSize(new Dimension(800, 600)); Container contentPane = getContentPane();
contentPane.setLayout(new BorderLayout());
contentPane.add(p, BorderLayout.CENTER);
contentPane.add(control, BorderLayout.EAST);
control.add(slider);
slider.setMajorTickSpacing(90);
slider.setMinorTickSpacing(30);
slider.setPaintLabels(true);
slider.setPaintLabels(true);
slider.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
p.setAngle(slider.getValue());
p.repaint();
}
}
);
} //Get Applet information
public String getAppletInfo() {
return "Applet Information";
} //Get parameter info
public String[][] getParameterInfo() {
return null;
} //static initializer for setting look & feel
static {
try {
//UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
//UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
}
catch (Exception e) {
}
}
}
解决方案 »
- swfupload+struts2如何获得上传时的路径
- 请推荐书:近期需要用java开发soap,涉及数据库和web service
- 谁有jmf比较全面的学习文档啊?
- jsp 问题
- 一个ireport+jasperreports报表的一个最最基础的问题
- 关于输入输出流的一个小问题
- (JavaMail)请问哪位有处理 hz-gb-2312 编码的经验,我的Message.getContent碰到这种来信会出错。
- 有大量jar包的时候报错:java.lang.OutOfMemoryError: PermGen space
- 请教一个简单的问题
- 我是新人!大家说该找本什么书学啊~?
- 数组二分法排序就一定要改变元素的顺序吗
- 怎样在调试时可以看到jdk类中的方法中的局部变量的值?
2、Math.sin和Math.cos的参数都是弧度而不是角度。因此你必须把slider上的数值换算成弧度。
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.*;
import javax.swing.event.*;class myPane
extends JPanel {
int x1 = 300;
int y1 = 300;
int x2;
int y2;
int Angle; public myPane() {
setPreferredSize(new Dimension(800,600)); //此处设Size
} public void setAngle(int a) {
Angle = a;
}
public int getAngle() {
return Angle;
} public void paintComponent(Graphics g) {
super.paintComponent(g);
x2 = (int) (x1 + 200 * Math.cos(this.getAngle()*Math.PI/180)); //此处计算
y2 = (int) (y1 + 200 * Math.sin(this.getAngle()*Math.PI/180));
g.drawLine(x1, y1, x2, y2);
}}public class Applet1
extends JApplet {
private boolean isStandalone = false;
myPane p = new myPane();
JPanel control = new JPanel();
JSlider slider = new JSlider(0, 360, 30);
//Get a parameter value
public String getParameter(String key, String def) {
return isStandalone ? System.getProperty(key, def) :
(getParameter(key) != null ? getParameter(key) : def);
} //Construct the applet
public Applet1() {
} //Initialize the applet
public void init() {
try {
jbInit();
}
catch (Exception e) {
e.printStackTrace();
}
} //Component initialization
private void jbInit() throws Exception {
this.setSize(new Dimension(800, 600)); Container contentPane = getContentPane();
contentPane.setLayout(new BorderLayout());
contentPane.add(p, BorderLayout.CENTER);
contentPane.add(control, BorderLayout.EAST);
control.add(slider);
slider.setMajorTickSpacing(90);
slider.setMinorTickSpacing(30);
slider.setPaintLabels(true);
slider.setPaintLabels(true);
slider.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
p.setAngle(slider.getValue());
p.repaint();
System.out.println("changed");
}
}
);
} //Get Applet information
public String getAppletInfo() {
return "Applet Information";
} //Get parameter info
public String[][] getParameterInfo() {
return null;
} //static initializer for setting look & feel
static {
try {
//UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
//UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
}
catch (Exception e) {
}
}
}
<applet code=Applet1.class codebase=. width=1000 height=600></applet>