使用图形和许多面板/框架重绘

时间:2013-10-14 00:53:56

标签: java swing graphics paintcomponent repaint

基本上我正在尝试做的是在更改这些属性时在预览窗口中使用可编辑属性为对象设置动画。例如,更改颜色,更改高度等,然后我想重绘图像。

我是Java的新手,并不真正理解它应该如何组织或我做错了什么,所以我认为答案可能与我的代码组织有关。以下不完全是我的代码,但我认为仍然可以说明这个例子:

public class displayingObjects extends JPanel{
  public static void main(String[] args) {

    class ShapesPanel extends JPanel
    {
        final Color bg = Color.white;
        final Color fg = Color.lightGray;

        public ShapesPanel()
        {
            setBackground(bg);
            setForeground(fg);
        }

        public void paintComponent (Graphics g)
        {
            super.paintComponent(g);

        }

    }

  JFrame jf = new JFrame();
  ShapesPanel sp = new ShapesPanel();
    //I'd like to do some drawing onto sp in here.


  sp.setPreferredSize(new Dimension(300,300));
  jf.add(sp);
  jf.pack();
  jf.setVisible(true);

  if (SelectedNewObject()) {
    //I'd like to call "drawNewObject(theObject, theShapesPanel) here and then
    //hide the old object and show only the new one.
    //the action listeners have already been written and pick up what I need


 ...
}

我知道重绘应该使用repaint()函数,可能在组件上调用remove()和add(),或者也许是validate(),但我真的不确定如何绘制在创建它的类之外的画布上。

同样,我对Java非常陌生,所以如果我的Java样式很糟糕或者我的组织很混乱,而且所有内容都应该放在不同的文件/包中等等,我很抱歉。让我知道如何改进而且我非常感激。谢谢!

0 个答案:

没有答案