2013-03-11 48 views
0

我想知道你能不能帮我解决我的程序结构问题。我正在和Java进行一场比赛,我有两节课。 1类是使用绘制方法扩展JFrame的图形类:如何使用Swing在Java中构建我的图形结构?

图形类 paint()并调用使用JFrame作为参数的各种对象。 类内部是实现MouseListener和Mouse Motion Listener的子类,它与paint方法交互。

画布类 我打算把第一类嵌入到一个更大的画布类中,该画布类会有按钮,面板等等,因此基本上把这个类用作较大程序中的较小(子程序)。 这是可能的/我是这样做的正确方法。每当我尝试调用画布类中的图形类时,图形都不会出现。

public Canvas(){ 
    graphic = new Graphic(name); 

} 
/** 
* @param args 
*/ 
public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    Canvas canvas = new Canvas(); 
      canvas.setDefaultCloseOperation(EXIT_ON_CLOSE); 
      canvas.setSize(1500, 1500); 
    canvas.setVisible(true); 
} 

} 任何帮助/指导,将不胜感激。我只是想主要知道我是否正确地思考图形编程。

+0

[例如](http://docs.oracle.com/javase/tutorial/2d/index.html),[和这里](http://docs.oracle.com/javase/tutorial/uiswing/ painting/index.html),[and here](http://www.java2s.com/Tutorial/Java/0261__2D-Graphics/Catalog0261__2D-Graphics.htm) – mKorbel 2013-03-11 06:36:16

回答

1

Canvas不是“窗口”。为了在屏幕上显示任何内容,必须将组件添加到窗口委托。

我个人会避免重写顶级容器的paint方法。这样做的主要原因是顶级容器不是双缓冲的,它使您的应用程序的可移植性降低。向其他组件添加组件要容易得多,一个框架是最终的。

我也会在画布上使用JPanel,只是因为JPanel是双缓冲。

+0

gotcha。非常感谢您的帮助。 – and0rsk 2013-03-11 07:34:53