`
725137
  • 浏览: 81904 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

JTabbedPane 自定义显示效果

阅读更多
直接贴点代码吧


package inci.emp.ctrl.whole;

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Insets;
import java.awt.LayoutManager;
import java.awt.Window;

import javax.swing.JComponent;
import javax.swing.UIManager;
import javax.swing.plaf.ComponentUI;
import javax.swing.plaf.basic.BasicTabbedPaneUI;

public class RecTabbedPaneUI extends BasicTabbedPaneUI
{
	/**
	 * by: QQ: 725137 Name:whole
	 */
	private Color defaultColor = new Color(192, 192, 192);

	private Color selectedColor = new Color(155, 159, 232);

	public static ComponentUI createUI(JComponent c)
	{

		return new RecTabbedPaneUI();
	}

	protected void paintTabBackground(Graphics g, int tabPlacement,
			int tabIndex, int x, int y, int w, int h, boolean isSelected)
	{
		g.setColor(!isSelected || selectedColor == null ? defaultColor
				: selectedColor);
		
		switch (tabPlacement)
		{
		case LEFT:
			g.fillRect(x + 1, y + 1, w - 1, h - 3);
			break;
		case RIGHT:
			g.fillRect(x, y + 1, w - 2, h - 3);
			break;
		case BOTTOM:
			g.fillRect(x + 1, y, w - 3, h - 1);
			break;
		case TOP:
		
		default:
			g.fillRect(x + 1, y + 1, w - 3, h - 1);
	
		}
		
	}

	protected LayoutManager createLayoutManager()
	{

		
		return new TabbedPaneLayout();

	}// 设置Layout

	public class TabbedPaneLayout extends BasicTabbedPaneUI.TabbedPaneLayout
	{

		protected void calculateTabRects(int tabPlacement, int tabCount)
		{
			super.calculateTabRects(tabPlacement, tabCount);
			
			setRec(10);
			// 设置间距
			tabInsets.bottom = 10;//设置选项卡高度
		}

		public void setRec(int rec)
		{
			for (int i = 0; i < rects.length; i++)
			{
				rects[i].x = rects[i].x + rec * i;
			}
		}
	}

	public void setDefaultColor(Color defaultColor)
	{
		this.defaultColor = defaultColor;
	}

	public void setSelectedColor(Color selectedColor)
	{
		this.selectedColor = selectedColor;
	}

	protected void paintContentBorder(Graphics g, int tabPlacement,
			int selectedIndex)
	{
		int width = tabPane.getWidth();
		int height = tabPane.getHeight();
		Insets insets = tabPane.getInsets();
		Insets tabAreaInsets = getTabAreaInsets(tabPlacement);

		int x = insets.left;
		int y = insets.top;
		int w = width - insets.right - insets.left;
		int h = height - insets.top - insets.bottom;

		switch (tabPlacement)
		{
		case LEFT:
			x += calculateTabAreaWidth(tabPlacement, runCount, maxTabWidth);

			w -= (x - insets.left);
			break;
		case RIGHT:
			w -= calculateTabAreaWidth(tabPlacement, runCount, maxTabWidth);

			w += tabAreaInsets.left;

			break;
		case BOTTOM:
			h -= calculateTabAreaHeight(tabPlacement, runCount, maxTabHeight);

			h += tabAreaInsets.top;

			break;
		case TOP:


			
		default:
			y += calculateTabAreaHeight(tabPlacement, runCount, maxTabHeight);

			y -= tabAreaInsets.bottom;

			h -= (y - insets.top);
		}

		// Fill region behind content area
		Color color = UIManager.getColor("TabbedPane.contentAreaColor");
		if (color != null)
		{
			g.setColor(color);
		}
		else if (selectedColor == null)
		{
			g.setColor(tabPane.getBackground());
		}
		else
		{
			g.setColor(selectedColor);
		}
		g.fillRect(x, y, w, h);
		 g.setColor(selectedColor);
		 Graphics2D g2d = (Graphics2D) g;
		 g2d.setStroke(new BasicStroke(10.0f));
		 
		 g.drawLine(x+6, y+5,w, y+5);
		 g2d.setStroke(new BasicStroke(1.0f));
		 
	}

}

  • 大小: 125.8 KB
分享到:
评论

相关推荐

    java动画、图形和极富客户端效果开发(中文)+源码

    例如,你可以创建一个自定义的计时器动画,通过在每个时间间隔更新画布来达到动态显示的效果。 在Swing中,`javax.swing.Timer`类是用于创建动画和交互效果的关键。它可以定时触发特定的事件处理,例如改变组件的...

    美得让人震撼的swing效果

    在“美得让人震撼的swing效果”中,开发者可能会用到诸如JTabbedPane、JSplitPane等组件来构建多面板布局,使用JScrollPane来处理滚动内容,或者使用JTable和JTree展示数据。通过调整组件的边框、颜色、字体等属性,...

    JTab 例子介绍

    在Java编程语言中,`JTabbedPane`是一个非常重要的组件,它被用于创建具有多个选项卡的用户界面。`JTabbedPane`是Java Swing库的一部分,...在实践中,可以根据具体需求进行调整和扩展,以实现更丰富的功能和交互效果。

    card_src.zip_java src card_java 选项卡_java选项卡

    - **边框和标题**:如果文件名`带标题边框和选项卡.doc`指的是选项卡的视觉效果,那么可能涉及到自定义边框和标题样式。可以通过`setBorder(Border border)` 和 `setTitleAt(int index, String title)` 方法来调整...

    TabPanel效果,比较有用,收藏先。

    Jericho Tab Panel可能提供了丰富的自定义选项,如样式、动画效果以及交互行为等,使得开发者能够更方便地创建出符合设计需求的TabPanel。 在实际开发中,TabPanel的实现可以涉及以下知识点: 1. **HTML和CSS**:...

    swing入门样例,配置文件读取,画面显示

    这不仅包括基本组件的布局,还涉及事件监听、动画效果、自定义绘图等方面。Swing提供了各种布局管理器,如FlowLayout、BorderLayout、GridLayout等,以帮助开发者控制组件的位置和大小。此外,通过重写...

    swing炫酷界面与功能实现

    比如,JTable 可用于显示和编辑表格数据,JTree 显示层次结构的数据,JList 显示可选项目列表,而JTabbedPane 可以创建选项卡式界面。此外,JOptionPane 可以方便地弹出警告、确认或输入对话框。 Swing 还包含...

    JAVA界面编程示例

    此外,界面的响应式设计也是重要一环,确保应用在不同分辨率和设备上都能有良好的显示效果。 总的来说,“JAVA界面编程示例”这个资源包将引导学习者逐步掌握Java界面编程,从创建基础的窗口应用到打造功能丰富、...

    swing 组件 demo

    11. **JTabbedPane**: JTabbedPane允许在一个容器内组织多个组件,每个组件对应一个标签页。用户可以通过点击不同的标签页来切换显示的内容。 Swing组件的布局管理器也是其重要部分,如FlowLayout、BorderLayout、...

    Jave Swing Tab页签窗体,界面漂亮,毕业设计案例.zip

    Java的UI默认外观可能较为简单,但可以通过第三方库如Nimbus或 Substance,或者自定义LookAndFeel来改变整个应用的视觉效果。 对于“界面漂亮”的毕业设计案例,可能涉及到以下方面: 1. **定制化外观**:使用...

    Java 2 图形设计卷Ⅱ(Swing)

    - 动态性:Swing组件支持动态更新和实时反馈,如实时数据显示或动画效果。 - 事件处理:Swing采用事件监听机制,方便处理用户交互事件。 - 异步UI:Swing基于Event Dispatch Thread (EDT),确保了GUI更新的线程...

    java.swing总结

    例如,JTable 用于展示数据表格,JTree 用于显示层次结构数据,还有 JTabbedPane 用于创建选项卡式面板,JToolBar 用于创建工具栏,以及 JSpinner 用于数字输入等。Swing 还允许开发者自定义组件外观,通过设置 Look...

    java swing 仿酷我音乐盒界面源码

    为了实现酷我音乐盒的视觉效果,Swing 提供了JTabbedPane,可以用于创建多面板的界面,比如设置、播放模式等。还可以使用JSplitPane来分割界面,让用户自由调整各个区域的大小。此外,通过设定组件的边框、背景色、...

    openSwing组件

    11. **JTabbedPane**: JTabbedPane允许你在多个面板之间切换,每个面板都可以包含不同的组件,这样可以组织和分隔界面内容。 12. **Layout Managers**: Swing提供了多种布局管理器,如FlowLayout、BorderLayout、...

    Swing 扩展组件 Swing 扩展组件

    7. **JTable**:用于显示和编辑二维数据的组件,支持排序、过滤和自定义列。 8. **JDatePicker**:日期选择器,提供更友好的日期输入方式。 9. **JColorChooser**:颜色选择对话框,用户可以选择需要的颜色。 10. **...

    Java Swing'组件集合

    Swing 提供了 Nimbus、Metal、Windows 和 Motif 四种内置的LookAndFeel,也可以自定义外观以达到更个性化的界面效果。 总之,Java Swing 组件集合为开发者提供了强大的工具,用于构建具有专业外观和丰富功能的桌面...

    java swing

    这可以实现更复杂的用户界面效果,例如自定义绘图、添加特殊行为等。 5. **模型-视图-控制器(MVC)架构**:Swing遵循MVC设计模式,其中模型负责数据处理,视图负责展示,控制器负责两者之间的交互。这种分离使得...

    Java Swing 中文Api

    布局管理器负责组件的自动排列和大小调整,使得界面在不同屏幕尺寸下仍能保持良好的显示效果。 Swing还包含了诸如JOptionPane这样的对话框组件,用于弹出信息提示、确认对话或输入框。JTabbedPane允许在单个窗口中...

    JTable(还分页面板示例)

    在这个例子中,我们使用了`AbstractTableModel`作为自定义的表格模型。`AbstractTableModel`是`TableModel`的一个抽象实现,为开发者提供了一些基本的方法实现,如获取行数、列数以及单元格数据,简化了模型的创建...

    java课件(完整版)第8章--5

    4. 标签页面板(JTabbedPane):提供一种将多个组件封装到单个容器中并以标签页的形式切换显示的方法,这样可以在有限的空间内组织大量内容。 5. 工具栏(JToolBar):常用于放置常用操作的按钮和快捷方式,便于...

Global site tag (gtag.js) - Google Analytics