问一个Swing做界面算是设计模式方面的问题,语言上应如何去实现 简单点可以直接用JLabel或者JButton,用setIcon就可以把图表示出来也可以自己写个component,直接把图画出来 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用一个jpanel,然后在它上面画出来,你只要建一个Image对象(如指定jpg文件),然后把这个Image传给jpanel画出来就可以了 简单说我想问的意思是有一个类A和类B,其中类B继承自JFrame怎么样在A的方法在实现在B的面板上绘制图??class A{ public void ff(){ //TO DO 在这里实现往B的面板中绘图。 }}class B extends JFrame{} 我的观点:1.画图的功能代码应该另行封装,不应该直接写在UIMenuBar.java中。2.绘制图片的方法只需要一个Image对象和一个Graphics2D对象即可,使用后者的drawImage方法应该可以满足你要求的画图方式viewport对象好象不能直接在上面绘图吧,可能要装入一个JPanel作为画板:JViewport viewport = new JViewport();JPanel view = new JPanel();view.add(new JLabel(new ImageIcon("copy.gif")));viewport.setView(view); 同意Abib的看法。事件处理部分因该和界面完全分离。绘图部分只要传入一个Graphics对象的引用即可,没理由和界面放在一起。建议楼主看看MVC模式方面的材料 A 要在B里画图:A.draw(Graphics g){}B {paint(Graphics g){A.draw(g);}} 上面的他码为什么不能直接调用呢比如写成A 要在B里画图:A.draw(Graphics g){}B {//paint(Graphics g){A.draw(g);//}} 我无话可说了,请你买本Java语法书和Swing书好好看看吧. 要想在B组件中画图必须让 B失效(invalidate,repaint) -> 系统调用B.paint(Graphics g),如果你想在B中画A的东西,必须将Graphics g传给A,让A自己画. 在这之前,B必须得到A的实例.其实最大的问题和以上程序的逻辑无关.是语法和Swing知识薄弱. 介绍一种MVC,其实我也不懂,哈哈要不BARRACUDA来实现,你可以轻松实现显示和控制的区分! 不知道你的问题是需要用什么模式,还是怎样在 Viewport中画图?如果是需要用什么模式的话,我认为无所谓模式,只要代码逻辑划分清晰就可以了.至于在viewport中画图,前面已经答过了,使用一个可视对象加在viewport中,在可视对象的paint()方法中处理就可以了. 简单的SERVER CLIENT交流的小程序的疑问 关于接口的一个问题, 怎样序列化有lazy="true"属性的java对象?(由hibernate生成) JTree的问题请教! 请问各位老大在Debian Linux中,怎么设置jfreechart中文?现在显示都是框 怎样学java [急]有趣的数问题 能否用正则表达式解决? 请问,如何向actionPerformed中传入参数? 5555我的第一个JAVA程序就编译失败,那位高手帮我看看! 求救!急!!! 一个弱的问题 小弟的一个Java程序,请高手指点迷津。
public void ff(){
//TO DO 在这里实现往B的面板中绘图。
}
}class B extends JFrame{}
1.画图的功能代码应该另行封装,不应该直接写在UIMenuBar.java中。
2.绘制图片的方法只需要一个Image对象和一个Graphics2D对象即可,使用后者的drawImage方法应该可以满足你要求的画图方式
viewport对象好象不能直接在上面绘图吧,可能要装入一个JPanel作为画板:
JViewport viewport = new JViewport();
JPanel view = new JPanel();view.add(new JLabel(
new ImageIcon("copy.gif")));viewport.setView(view);
事件处理部分因该和界面完全分离。
绘图部分只要传入一个Graphics对象的引用即可,没理由和界面放在一起。
建议楼主看看MVC模式方面的材料
}B {
paint(Graphics g){
A.draw(g);
}
}
比如写成
A 要在B里画图:A.draw(Graphics g){
}B {
//paint(Graphics g){
A.draw(g);
//}
}
要不BARRACUDA来实现,你可以轻松实现显示和控制的区分!
如果是需要用什么模式的话,我认为无所谓模式,只要代码逻辑划分清晰就可以了.
至于在viewport中画图,前面已经答过了,使用一个可视对象加在viewport中,在可视对象的paint()方法中处理就可以了.