Java 使用图形和多个面板/框架重新绘制

Java 使用图形和多个面板/框架重新绘制,java,swing,graphics,paintcomponent,repaint,Java,Swing,Graphics,Paintcomponent,Repaint,本质上,我试图做的是在预览窗口中设置一个对象的动画,只要这些属性发生更改,该对象就具有可编辑属性。例如,更改颜色、更改高度等,然后我想重新绘制图像 我对Java是个新手,并不真正理解它应该如何组织,或者我做错了什么,所以我认为答案可能与我的代码组织有关。下面的内容并不完全是我的代码,但我认为仍然可以理解示例的要点: public class displayingObjects extends JPanel{ public static void main(String[] args) {

本质上,我试图做的是在预览窗口中设置一个对象的动画,只要这些属性发生更改,该对象就具有可编辑属性。例如,更改颜色、更改高度等,然后我想重新绘制图像

我对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风格糟糕,或者我的组织一团糟,事情应该都在不同的文件/包中,我很抱歉。请告诉我如何改进,我将非常感谢。谢谢

从花时间通读开始,然后。Swing(和大多数GUI)是一个事件驱动的环境。用户做了什么,你就回应它。您需要设置您的UI,以允许用户触发组件上的事件并响应它们。我已经为该项目创建了GUI,它可以响应用户,但它可能有500行代码,似乎与问题完全无关。发布的示例是关于图形的项目概要,这是我唯一需要帮助的部分。不过,谢谢。然后检查最后两个链接……引用了一个相关的例子。