Apache Pivot教程 -- TabPane

本文是Apache Pivot教程的一部分,重点介绍了TabPane组件的使用。通过学习,你可以掌握如何像浏览器那样动态添加和删除标签,了解即使标签名称重复也能正常工作的特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Apache Pivot教程 – TabPane

今天来讲一讲TabPane

package tab_pane;

import org.apache.pivot.wtk.*;
import org.apache.pivot.collections.*;

public class tab_pane implements Application
{
	private Window window=null;
	public static void main(String [] args)
	{
		try
		{
			DesktopApplicationContext.main(tab_pane.class, args);
		}
		catch(Throwable err)
		{
		}
	}
	@Override
	public void startup(Display display, Map<String, String>properties)
	{
		window=new Window();
		TabPane s=new TabPane();
		BoxPane panel=new BoxPane();
		PushButton button1=new PushButton("hello");
		BoxPane panel1=new BoxPane();
		panel1.add(new Label("hello"));
		panel1.add(new Label("hi"));
		panel1.add(new PushButton("hello"));
		s.getTabs().add(button1);  //添加标签
		s.getTabs().add(panel1);  //添加标签
		TabPane.setTabData(button1, "hello");  //设置标签内容
		TabPane.setTabData(panel1, "hello, panel");  //设置标签内容
		s.getComponentMouseListeners().add(new ComponentMouseListener()
				{

					@Override
					public boolean mouseMove(Component arg0, int arg1, int arg2) {
						panel.repaint();
						s.repaint();
						return false;
					}

					@Override
					public void mouseOut(Component arg0) {
						panel.repaint();
						s.repaint();
					}

					@Override
					public void mouseOver(Component arg0) {
						panel.repaint();
						s.repaint();
					}
			
				});
		panel.add(s);
		window.setContent(panel);
		window.setTitle("TabPane");
		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()
	{
	}
}



能坚持看完就有菜单,现在来给大家看看怎么像浏览器一样随意增加标签

package tab_pane;

import org.apache.pivot.wtk.*;
import org.apache.pivot.collections.*;

public class tab_pane implements Application
{
	private Window window=null;
	public static void main(String [] args)
	{
		try
		{
			DesktopApplicationContext.main(tab_pane.class, args);
		}
		catch(Throwable err)
		{
		}
	}
	@Override
	public void startup(Display display, Map<String, String>properties)
	{
		window=new Window();
		TabPane s=new TabPane();
		BoxPane panel=new BoxPane();
		PushButton button1=new PushButton("hello");
		BoxPane panel1=new BoxPane();
		panel1.add(new Label("hello"));
		panel1.add(new Label("hi"));
		panel1.add(new PushButton("hello"));
		s.getTabs().add(button1);
		s.getTabs().add(panel1);
		//上面是基础的内容,现在难度来了
		ArrayList<PushButton>buttons=new ArrayList<PushButton>();  //添加按钮数组
		PushButton button2=new PushButton("New Tab");  //定义一个新按钮
		button2.getButtonPressListeners().add(new ButtonPressListener(){
			@Override
			public void buttonPressed(Button button)
			{
				buttons.add(new PushButton("hello"));
				s.getTabs().add(buttons.get(buttons.getLength()-1));
				TabPane.setTabData(buttons.get(buttons.getLength()-1), "hello");
			}
		});
		s.setCorner(button2);  //在右上角添加按钮
		//回到之前的代码
		TabPane.setTabData(button1, "hello");
		TabPane.setTabData(panel1, "hello, panel");
		s.getComponentMouseListeners().add(new ComponentMouseListener()
				{

					@Override
					public boolean mouseMove(Component arg0, int arg1, int arg2) {
						panel.repaint();
						s.repaint();
						return false;
					}

					@Override
					public void mouseOut(Component arg0) {
						panel.repaint();
						s.repaint();
					}

					@Override
					public void mouseOver(Component arg0) {
						panel.repaint();
						s.repaint();
					}
			
				});
		panel.add(s);
		window.setContent(panel);
		window.setTitle("TabPane");
		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()
	{
	}
}



上面的实验证明了标签名称可以重复,标签可以随意增删

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值