我有一个名为Window的类,它扩展了JFrame并设置了基本布局。对于那个JFrame,我想添加不同的JPanel和一个名为Tracking的单独类,决定在JFrame中显示哪个JPanel。我希望Tracking类能够更改JFrame中显示的JPanel。
每个JPanel都是一个单独的类,JFrame和Tracking类也是单独的类。
Window.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();
}
}
Animation.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();
}
}
答案 0 :(得分:1)
你有任意数量的cohoes
传递帧或控制器的引用。这样就可以访问框架上的所有组件。
这是一个坏主意,因为它会不必要地将控制框暴露给控制器,给控制器提供更多的功率然后实际需要......
将面板列表传递给控制器。这个wold允许控制器根据需要更换面板。
这个想法不是太糟糕,但是一个聪明的控制器能够使用getParent方法来推断顶级容器,再次,不必要地暴露部分应用程序
创建一个简单的模型,该模型具有简单的访问器,允许控制器向UI建议应该激活哪些视图。例如,这些可以命名,或者您可以简单地提供next
/ previous
/ first
/ last
方法以允许控制器更改视图。
这允许您以可插入的方式更改视图排序,只需提供一个不会影响应用程序任何其他部分的新模型