我用Java制作了一个JSlider,它可以改变线需要倾斜的角度。
angle = new JSlider(SwingConstants.HORIZONTAL, 0, 180, 90);
angle.setSize(300, 50);
angle.setLocation(650, 60);
angle.setPaintTicks(true);
angle.setPaintTrack(true);
angle.setMinorTickSpacing(10);
angle.setMajorTickSpacing(30);
angle.setPaintLabels(true);
angle.addChangeListener(this);
thepanel.add(angle);
我希望代码绘制从JSlider实现角度的那条线。
这是我的代码:
public void paintComponent(Graphics g){
super.paintComponent(g);
int angle = intAngle;
Graphics2D graphics = (Graphics2D)g;
int startX = getWidth()/2;
int startY = getHeight()/2;
int length = 200;
int endX = startX + length * (int)Math.cos(Math.toRadians(angle));
int endY = startY + length * (int)Math.sin(Math.toRadians(angle));
graphics.drawLine(startX, startY, endX, endY);
}
旋转给定值的线背后的数学是什么?
第1步:扩展JPanel
和覆盖paintComponent()
。您已经提到您已经执行了此步骤,但是此处提供了更多信息。
步骤2:将您的价值JSlider
带入您的paintComponent()
方法。
第3步:在上添加一个侦听器,该侦听器JSlider
告诉您JPanel
只要值更改即可重绘自身。
步骤4:使用基本三角函数找出要绘制的线的X和Y坐标,然后进行绘制。它可能看起来像这样:
public void paintComponent(Graphics g){
super.paintComponent(g);
int angle = getSliderValue(); //you have to implement this function
int startX = getWidth()/2;
int startY = getHeight()/2;
int length = 100;
int endX = startX + (int)Math.cos(Math.toRadians(angle)) * length;
int endY = startY + (int)Math.sin(Math.toRadians(angle)) * length;
g.drawLine(startX, startY, endX, endY);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句