加载应用程序时,将形成并显示选项卡的内容。稍后,可以通过其他操作更改选项卡的内容。我想在每个动作后显示更新的内容。每次单击选项卡表时,都应刷新/更新内容。但我失败了。
//the content of the tab from the "reprintsTab" class
//in the "reprintsTab" it query data from database and print out
//later I update the data in the database from somewhere else, and I want the tab shows the new content
//I want to click the tab sheet to reload the "reprintTab" class and print out the new content
//here is what I did:
public TabSheet sheet;
//add tab and add the content from "reprintTab" into this tab
sheet.addTab(new reprintsTab());
//add the listener
sheet.addListener(new TabSheet.SelectedTabChangeListener() {
@Override
public void selectedTabChange(SelectedTabChangeEvent event) {
//I know it does not work, because it only reload the class. but not put the content under the tab I want
new reprintsTab();
}
});
我该怎么办?请帮助我,谢谢。
答案 0 :(得分:3)
您可以使用TabSheet.replaceComponent方法执行此操作:
//Field to store current component
private reprintsTab currentComponent;
//during initialization
currentComponent = new reprintsTab();
sheet.addTab(currentComponent);
sheet.addListener(new TabSheet.SelectedTabChangeListener() {
@Override
public void selectedTabChange(SelectedTabChangeEvent event) {
reprintsTab newComponent = new reprintsTab();
sheet.replaceComponent(currentComponent, newComponent);
currentComponent = newComponent;
}
});
此外,您可能只想在显示时重新加载此标签:
sheet.addListener(new TabSheet.SelectedTabChangeListener() {
@Override
public void selectedTabChange(SelectedTabChangeEvent event) {
if (event.getTabSheet().getSelectedTab() == currentComponent) {
//here goes the code
}
}
});
这应该对你有用,但我建议采用更简洁的方法:实现reprintsTab
作为组件的容器,创建方法reload
或buildInterface
方法来刷新其状态,所以你可以打电话:
currentComponent.reload();
何时需要更新界面。
另外,我希望reprintsTab
只是一个示例名称,以小写字母开头的java类名称看起来很难看。