`
linsyyang
  • 浏览: 5202 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

编程问题(1)

阅读更多
在写线程小球的代码的时候遇到的几个方面的问题
1.线程的创建位置的选择
2.传递参数
3.学会把程序写的更容易看懂和改写

首先,是线程位置的选择或者说是整个程序流程。在最初测试线程时,目的是每按一次按钮都能让小球从初始位置跑出来,
而后来,要实现小球的随按钮的按下而停止或者继续跑的功能时,因为按钮的动作是导致线程的运行变化,所以所以线程
的实例化必须要在按钮监听器之外,按钮监听器中只需要改变线程的内部属性值。

然后,是参数的传递。在这个程序中,我定义了3个类,一个包含主函数的测试类,一个实现按钮监听器的类和一个线程类。
测试类中主要实现界面的绘制和调用监听器和线程,线程类包含了绘制小球的方法和控制小球运动与停止的属性on_off
和改变该属性的方法change。监听器主要是修改线程类的内部的开关on_off属性。1)从监听器开始,因为属性on_off
是内部私有属性,方法change也是Thread类的私有方法,所以必须要在监听器类中调入一个Thread类的对象并设置
一个属性保存on_off的值,所以需要创建两个属性并重载其构造方法,传入Thread的对象和画布,然后在事件处理时
改变Thread类的属性值。2)Thread类中,需要监听器中改变了的on_off属性来控制小球的运动和停止,所以要传入
监听其中改变了的属性on_off,然后在根据属性来控制小球。反正,需要什么就去拿什么,根据应用来实现类的创建。

程序代码
//主函数测试类
public class PubbleRun {

/**建立窗口,当按下按钮"run"时,从窗口四个角各跑出一个小球
* @param args
*/
public static void main(String[] args) {
JFrame jf=new JFrame();
jf.setTitle("Pubble Run");
jf.setSize(600, 600);
JButton jb=new JButton("跑吧");
jb.setPreferredSize(new Dimension(80,50));
jf.add(jb);
jf.setLayout(new FlowLayout());
jf.setVisible(true);

Graphics g=jf.getGraphics();
PubbleThread ptlu=new PubbleThread(g,true);
ptlu.start();

ButtonActionListener l=new ButtonActionListener(g,ptlu);
jb.addActionListener(l);
}
}

//监听器类
ublic class ButtonActionListener implements ActionListener{
private Graphics g;
private int on_off=1;
private PubbleThread ptlu;

public ButtonActionListener(Graphics g,PubbleThread ptlu){
this.g=g;
this.ptlu=ptlu;
}

public void actionPerformed(ActionEvent e) {
ptlu.change();
}

//线程类
public class PubbleThread extends Thread{
private Graphics g;
private boolean on_off;

public PubbleThread(Graphics g,boolean on_off){
this.g=g;
this.on_off=on_off;
}

public void change(){
on_off =!on_off;

}

public void run(){
graw();
}

public void graw(){
....
....
}

}

还有一个就是从同学的指导中学到的,就是尽量不要在系统中已有的方法中写太多东西,如果实在有很多东西要补充,可
以再自己写一个方法然后从系统中自带的方法复写时调用就行了。

总之,敲代码需要的逻辑性和思维性还需要很多很多的练习才能一步一步慢慢训练出来。重要的是脚踏实地,不要急功近利
慢慢的一步一步去实现。不要急,不要焦躁,相信自己。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics