Apache Pivot教程 -- 控件setVisible(false)之后会怎样

    科技2024-06-04  79

    Apache Pivot教程 – 控件setVisible(false)后会怎样

    控件setVisible(false)后点击还会出发监听事件吗?原来的位置会被占用吗? 之前将控件的时候基本上是蜻蜓点水,讲得很快,不够深,很多概念性的东西没有写,作者表示很抱歉,现在给大家补上 不过反过来说,如果作者进度很慢,总是不发文章,现在在看的或许就没有几位了… 首先要明确一个观点:控件setVisible(false)之后,就相当于这个控件不存在了 我们做一个简单的例子

    package buttons; import org.apache.pivot.wtk.*; import org.apache.pivot.wtk.ScrollPane.ScrollBarPolicy; import org.apache.pivot.collections.*; public class visible_button implements Application { private Window window=null; public static void main(String [] args) { try { DesktopApplicationContext.main(visible_button.class, args); } catch(Throwable err) { } } @Override public void startup(Display display, Map<String, String>properties) { window=new Window(); ScrollPane s=new ScrollPane(); s.setVerticalScrollBarPolicy(ScrollBarPolicy.AUTO); BoxPane panel=new BoxPane(); s.setView(panel); ActivityIndicator activityindicator=new ActivityIndicator(); activityindicator.setActive(true); activityindicator.getActivityIndicatorListeners().add(new ActivityIndicatorListener() { @Override public void activeChanged(ActivityIndicator activityindicator) { System.out.println(activityindicator.isActive()); } }); panel.add(activityindicator); PushButton button=new PushButton(); button.setPreferredSize(150, 100); button.setVisible(false); button.setButtonData("setActive(true/false)"); button.getButtonPressListeners().add(new ButtonPressListener() { @Override public void buttonPressed(Button button) { if(activityindicator.isActive()) { activityindicator.setActive(false); } else { activityindicator.setActive(true); } } }); panel.add(button); window.setContent(s); window.setTitle("ActivityIndicators"); window.setMaximized(true); window.open(display); } @Override public boolean shutdown(boolean optional) { if(window!=null) { window.close(); } return false; } @Override public void suspend() { } @Override public void resume() { } }

    不难发现,按钮不见了,点原来按钮的位置也没有任何事情发生 可以说,在Apache Pivot中,只要按键隐藏了,你就可以当它不存在了,直到你重新将它显示出来为止 当然,ActivityIndicator好像并不是这个逻辑,它看不见了却依旧占着原来的位置 其实,这是因为它没有隐藏,只是不加载了,就停止了旋转,却没有经过setVisible(false)这一步,并不会真正消失,而是会在重新加载时运转

    Processed: 0.018, SQL: 8