-1

我有一个名为 Window 的类,它扩展了 JFrame 并设置了基本布局。我想向那个 JFrame 添加不同的 JPanel,一个名为 Tracking 的单独类决定在 JFrame 中显示哪个 JPanel。我希望 Tracking 类能够更改 JFrame 中显示的 JPanel。

每个 JPanel 是一个单独的类,JFrame 和 Tracking 类也是单独的类。

窗口.java

package Setup;

import javax.swing.JFrame;

public class Window extends JFrame
{

    private static final int width = 1280;
    private static final int height = 720;

    public Window()
    {
        setResizable(false);
        setSize(width, height);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//        frame.setUndecorated(true);
//        frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
        setVisible(true);
    }

    public static void main(String[] args)
    {
        new Window();
    }
}

动画.java

package Setup;

import java.awt.Graphics;
import java.awt.Image;
import javax.swing.JPanel;

public class Animation extends JPanel
{

    private final int width = super.getWidth();
    private final int height = super.getHeight();
    private Image dbImage;
    private Graphics dbGraphics;

    public Animation()
    {
        setSize(width, height);
        setVisible(true);
    }

    @Override
    public void paint(Graphics g)
    {
        dbImage = createImage(getWidth(), getHeight());
        dbGraphics = dbImage.getGraphics();
        paintComponent(dbGraphics);
        g.drawImage(dbImage, 0, 0, this);
    }

    @Override
    public void paintComponent(Graphics g)
    {
        //ADD Animation to get attention from users
        g.drawString("TEST TEST TEST", 50, 50);
        repaint();
    }
}
4

1 回答 1

1

你有任意数量的cohoes

你可以...

传递框架或控制器的引用。这将允许您访问框架上的所有组件。

这是一个坏主意,因为它会将框架不必要地暴露给控制器,给控制器比它实际需要的更多的权力......

你可以...

将面板列表传递给控制器​​。这将允许控制器根据需要更改面板。

这是一个不错的主意,但是一个聪明的控制器将能够使用 getParent 方法来推断顶级容器,再次不必要地暴露应用程序的某些部分

你可以...

创建一个简单的模型,该模型具有简单的访问器,允许控制器向 UI 建议哪些视图应该处于活动状态。例如,这些可以命名,或者您可以简单地提供 ///方法以next允许控制器更改视图。previousfirstlast

这允许您以可插入的方式更改视图排序,只需提供一个新模型,这不会影响应用程序的任何其他部分

于 2013-04-28T20:42:15.870 回答