0
我有Back
/Forward
键(功能并不重要,只想让我的头周围和缩小GWT页面交换面板)GWT视图导航基本的例子
NavigationButtonsPanel
导航面板public class NavigationButtonsPanel extends HTMLPanel
{
private Button btnA = new Button("Go back");
private Button btnB = new Button("Go forward");
public NavigationButtonsPanel()
{
super("Navigation Panel");
add(btnA);
add(btnB);
}
public void setBackHandler(ClickHandler handler)
{
btnA.addClickHandler(handler);
}
public void setForwardHandler(ClickHandler handler)
{
btnB.addClickHandler(handler);
}
}
我然后有3个基本面板,AB和C,其使用此。我从A-B-C导航回到B-A可以正常工作。他们去之前,面板B.在这种情况下PanelB一个标签 我现在模拟用户不断变化的东西。 我的最终应用程序显然会比这更复杂,但这是典型的应用程序如何工作。您可以通过同一面板或不同面板中的用户交互来修改面板中的某些字段,加载新面板,进行更多交互,加载不同面板等? 我只希望用户因此只有一个路径在一定面板使用了非常明确的导航路径。
红砂糖
public class PanelA extends HTMLPanel
{
private static PanelA panel;
private PanelA()
{
super("Panel A");
final RootPanel rootPanel = RootPanel.get();
NavigationButtonsPanel btnPanel = new NavigationButtonsPanel();
btnPanel.setForwardHandler(new ClickHandler() {
public void onClick(ClickEvent event)
{
rootPanel.clear();
PanelB.setMessageFromPreviousPage("Message set in Panel AAAAA");
rootPanel.add(PanelB.getInstance());
}
});
add(btnPanel);
}
public static PanelA getInstance()
{
if (panel == null)
{
panel = new PanelA();
}
return panel;
}
}
PanelB
public class PanelB extends HTMLPanel
{
private static PanelB panel;
private static String messageFromPreviousPage;
private PanelB()
{
super("Panel B");
final RootPanel rootPanel = RootPanel.get();
Label messageLabel = new Label(messageFromPreviousPage);
NavigationButtonsPanel btnPanel = new NavigationButtonsPanel();
btnPanel.setBackHandler(new ClickHandler() {
public void onClick(ClickEvent event)
{
rootPanel.clear();
rootPanel.add(PanelA.getInstance());
}
});
btnPanel.setForwardHandler(new ClickHandler() {
public void onClick(ClickEvent event)
{
rootPanel.clear();
rootPanel.add(PanelC.getInstance());
}
});
add(btnPanel);
add(messageLabel);
}
public static PanelB getInstance()
{
if (panel == null)
{
panel = new PanelB();
}
return panel;
}
public static void setMessageFromPreviousPage(
String message)
{
messageFromPreviousPage = message;
}
}
PanelC
public class PanelC extends HTMLPanel
{
private static PanelC panel;
private PanelC()
{
super("Panel C");
final RootPanel rootPanel = RootPanel.get();
NavigationButtonsPanel btnPanel = new NavigationButtonsPanel();
btnPanel.setBackHandler(new ClickHandler() {
public void onClick(ClickEvent event)
{
rootPanel.clear();
PanelB.setMessageFromPreviousPage("Message set in Panel CCCCCC");
rootPanel.add(PanelB.getInstance());
}
});
add(btnPanel);
}
public static PanelC getInstance()
{
if (panel == null)
{
panel = new PanelC();
}
return panel;
}
}