| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1071 人关注过本帖
标题:直线变折线
只看楼主 加入收藏
小牛
Rank: 1
等 级:新手上路
威 望:1
帖 子:434
专家分:8
注 册:2006-10-1
结帖率:81.48%
收藏
 问题点数:0 回复次数:7 
直线变折线

正在做闹钟的程序,用Graphics2D画了三个线段分别做为闹钟的时,分,秒钟。
但是当这个线段的位置改变——围绕一个圆心在转时,(时,分,秒钟在走动)线段不是直的了,是一个折线了。
有什么方法解决。

搜索更多相关主题的帖子: 折线 直线 线段 闹钟 圆心 
2007-05-27 16:50
songwei20000
Rank: 1
等 级:新手上路
帖 子:82
专家分:0
注 册:2007-4-23
收藏
得分:0 

把代码贴出来啊!不看看 怎么知道你哪里有问题呢!~

2007-05-27 17:23
a276202460
Rank: 2
等 级:新手上路
威 望:4
帖 子:392
专家分:1
注 册:2007-4-10
收藏
得分:0 
用正玄 和余弦 判断下一个次的坐标

2007-05-27 22:20
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
看上去是折的,实际上是直的

可惜不是你,陪我到最后
2007-05-28 09:09
小牛
Rank: 1
等 级:新手上路
威 望:1
帖 子:434
专家分:8
注 册:2006-10-1
收藏
得分:0 

还没写完,写完之后贴。
那看上去是折的,实际上是直的。那不是很难看。


本店经营各类国际品牌运动鞋,板鞋,休闲鞋,有李宁,nike,匹克,阿迪达斯。
2007-05-28 15:09
flushtime
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-5-28
收藏
得分:0 
还是可以让直线看起来直线的,你写完贴出代码后我再告诉你
2007-05-28 16:07
小牛
Rank: 1
等 级:新手上路
威 望:1
帖 子:434
专家分:8
注 册:2006-10-1
收藏
得分:0 

闹钟默认情况下是获得系统时间。也可以自动设置时间,用菜单的选项,我还没有做好,是一个死循环的问题,我用标志位Running进入死循环,在点击菜单时,触发事件,在 NewJPanel2做为监听器。先设置标志位Running为false,跳出死循环,然后获得设置的时间,在进入死循环,使时间走动。当我再次设置标志位Running为true时,没有调用这个死循环的函数。程序自动调用这个函数。我百思不得其解。


本店经营各类国际品牌运动鞋,板鞋,休闲鞋,有李宁,nike,匹克,阿迪达斯。
2007-05-28 17:11
小牛
Rank: 1
等 级:新手上路
威 望:1
帖 子:434
专家分:8
注 册:2006-10-1
收藏
得分:0 

import javax.swing.JPanel;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.geom.Line2D;

public class NewJPanel2 extends JPanel implements ActionListener
{

public static final int SlineLen=115;
public static final int MlineLen=SlineLen-20;
public static final int HlineLen=MlineLen-20;
public static final int P=SlineLen;
public static final GetRunningPoint grp=GetRunningPoint.GetInstanceRunningPoint();//r
private static final GetCurrentTime gct=new GetCurrentTime();
private NewPoint[] TimePoint =gct.GetTimePoint();
private Line2D.Double Hline=new Line2D.Double(P,P,TimePoint[0].x,TimePoint[0].y);//r
private Line2D.Double Mline=new Line2D.Double(P,P,TimePoint[1].x,TimePoint[1].y);//r
private Line2D.Double Sline=new Line2D.Double(P,P,TimePoint[2].x,TimePoint[2].y);//r
private BasicStroke Hpen=new BasicStroke(4.0f);
private BasicStroke Mpen=new BasicStroke(2.0f);
private BasicStroke Spen=new BasicStroke();
private RingTime rt=new RingTime(9,38,0);//r
private Thread bs=new Thread(new BellSong());//r
private boolean Running=true;
private int[] ABL=gct.GetBL();//r
private TimeDialog timedialog[]=new TimeDialog[2];

public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("设置闹铃时间"))
{
timedialog[0]=new TimeDialog("设置闹铃时间");
}



if(e.getActionCommand().equals("设置闹铃时间确定"))
{
String time[]=new String[3];
TextField[] a=timedialog[0].getTextField();
for(int i=0;i<3;i++)
time[i]=a[i].getText();
TimePoint=gct.GetTimePoint(time);

}



if(e.getActionCommand().equals("设置闹钟当前时间"))
{
timedialog[1]=new TimeDialog("设置闹钟当前时间");
}

if(e.getActionCommand().equals("设置闹钟当前时间确定"))
{ Running=false;//跳出死循环。
String time[]=new String[3];
TextField[] a=timedialog[1].getTextField();
for(int i=0;i<3;i++)
time[i]=a[i].getText();
TimePoint=gct.GetTimePoint(time);

Hline.setLine(P,P,TimePoint[0].x,TimePoint[0].y);
Mline.setLine(P,P,TimePoint[1].x,TimePoint[1].y);
Sline.setLine(P,P,TimePoint[2].x,TimePoint[2].y);
ABL=gct.GetBL();
this.repaint();
for(int i=0;i<3;i++)
System.out.println(ABL[i]);
Running=true;//请看这里的死循环,我没调用函数TimeRuning(),程序自动调用。问题在这里。


}
}
public void paint(Graphics g)
{ super.paint(g);
Graphics2D g2=(Graphics2D)g;
initTime(g2);

}
public void initTime(Graphics2D g2)
{
g2.setStroke(Hpen);
g2.draw(Hline);
g2.setStroke(Mpen);
g2.draw(Mline);
g2.setStroke(Spen);
g2.draw(Sline);
}

public void TimeRuning()
{

int x=0;int y=0;int z=0;
z=ABL[0]; y=ABL[1];x=ABL[2];


while(Running)
{
Hline.setLine(SlineLen,SlineLen,grp.HPoint[x].x,grp.HPoint[x].y);
Mline.setLine(SlineLen,SlineLen,grp.MPoint[y].x,grp.MPoint[y].y);
Sline.setLine(SlineLen,SlineLen,grp.SPoint[z].x,grp.SPoint[z].y);
this.repaint();

if (z == rt.ProcessRingTime()[0] && y == rt.ProcessRingTime()[1]
&& x == rt.ProcessRingTime()[2])
{
System.out.println("ColokingRing");
bs.start();
}

if(Running==false)

{
System.out.println("RunningFalse");
break;
}
try
{
Thread.sleep(1000);
}
catch (Exception e) {}


x++;
y++;
z++;
if(x==grp.HPoint.length)
x=0;
if(y==grp.MPoint.length)
y=0;
if(z==grp.SPoint.length)
z=0;
}
System.out.println("break2");
}


public void init()
{
setSize(2*SlineLen,2*SlineLen);
setLocation(Test.JF/2-SlineLen,Test.JF/2-SlineLen);
this.setBackground(Color.white);
setVisible(true);
}

public NewJPanel2()
{
init();
}

}

程序太大,无法上传。只有上传关键部分。


本店经营各类国际品牌运动鞋,板鞋,休闲鞋,有李宁,nike,匹克,阿迪达斯。
2007-05-28 17:13
快速回复:直线变折线
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028479 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved