今天学习了一下Java中的选项卡面板(JTabbedPane)的相关知识,有许多的好玩之处,也有许多不太懂的地方就去问了问度娘。

一起看看JTabbedPane的有趣故事:

还和以前一样,从代码说起。代码比较长我就直接用图片展示给大家。

(1)导入相关的包。

  

javafx 添加一个文件选择器 java在面板里添加选项卡_ui

   这一部分我就不做过多的解释以及说明,就是Java源代码中所用到的一些的包。

(2)主函数部分

javafx 添加一个文件选择器 java在面板里添加选项卡_javafx 添加一个文件选择器_02

  这一部分主要就是定义了一些私有的按钮,以及主函数。主类直接继承了JFrame面板。主函数直接新建了JTabbedPaneTest 类的对象,并设置对象为可见形式。

(3)JTabbedPaneTest 类的构造方法。

javafx 添加一个文件选择器 java在面板里添加选项卡_初始化_03

  这一部分是 JTabbedPaneTest 类的无参数的构造方法。

  36~38行:设置窗体的标题、大小以及窗体的关闭方式。

  40~45行:创建内容面板,并且设置其布局为边界布局(BorderLayout),将选项卡面板放置在内容面板的中间部分。

    40行:新建内容面板对象contentPane。

    41行:新建选项卡面板对象tabbedPane。

    42~45行:设置内容面板 contentPane的布局方式,并将选项卡面板加入到内容面板的中间部分。之后将JFrame窗体中的容器设置为 contentPane。

  47行:调用按钮初始化函数 buttonInit(),将所有选项卡面板上的按钮进行初始化。

  48行:调用选项卡面板初始化tabbedPaneInit(),将选项卡面板进行初始化。

  49行:调用监听函数addListener(),给所有的按钮添加监听事件。

(4)按钮初始化函数 buttonInit()。

 

javafx 添加一个文件选择器 java在面板里添加选项卡_java_04

javafx 添加一个文件选择器 java在面板里添加选项卡_javafx 添加一个文件选择器_05

  54~57行:新建一个单选按钮面板,其采用表格布局,设置为8行1列,将面板panel放在容器contentPane的左侧。

  59~62行:新建一个JLabel 标签,将其设置为“选项卡方向按钮”,并更该其字体为微软雅黑,黑体14号字体。

      调用JLabel包中的setHorizontalTextPosition(int textPosition) 方法,该方法设置标签的文本相对其图像的水平位置。

      其参数为:textPosition - SwingConstants 中定义的以下常量之一:LEFTCENTERRIGHTLEADINGTRAILING(默认)。 

  63~79行:这几行就是设置按钮的标题以及字体。

ButtonGroup

            (创建一个 ButtonGroup 对象并用其 add 方法将 JRadioButton 对象包含在此组中。) 

      65行:调用setSelected()方法,将“选项卡在顶部”设置为默认选中。

  80~85行:创建一个ButtonGroup 对象,将 rdbtnTop,rdbtnDown,rdbtnLeft,rdbtnRight 按钮加入到该对象中,保证每一次只能选择四个按钮中的一个。

  86~90行:参考59~62行,进行理解。

  91~99行:参考63~79行,进行理解。

  100~103行:参考80~95行,进行理解。

(5)选项卡面板初始化 tabbedPaneInit()。

javafx 添加一个文件选择器 java在面板里添加选项卡_选项卡_06

  该方法中分为三个部分,每一部分都是一样的,所以只进行一部分的说明。

  118~122行:新建标签 laLB,并设置其标题以及字体,之后调用JLabel包中的setHorizontalTextPosition(int textPosition) 方法,该方法设置标签的文本相对其图像的水平位置。

        最后将该标签及其组件加入到tabbedPane 面板中。

(6)监听事件addListener()。

javafx 添加一个文件选择器 java在面板里添加选项卡_选项卡_07

javafx 添加一个文件选择器 java在面板里添加选项卡_选项卡_08

  126~153行:该部分分为4部分,每一部分都实现的是动作监听器,并且基本类似,故只说明其中一部分。

    147~153行:第4部分,添加了动作监听器 ActionListener(),实现了其中的 actionPerformed(ActionEvent args) 方法,之后调用选项卡面板中 

          setTabPlacement(int tabPlacement) 方法,设置此选项卡窗格的选项卡布局。可能的值为:

          JTabbedPane.TOPJTabbedPane.BOTTOMJTabbedPane.LEFTJTabbedPane.RIGHT如果未设置,则默认值为 SwingConstants.TOP

  154~167行:该部分分为2部分,每一部分都实现了动作监听器,但是和上面的四部分有有所不同。

    161~167行:第2部分,添加了动作监听器ActionListener(),实现了其中的actionPerformed(ActionEvent args)方法,之后调用选项卡面板中

setTabLayoutPolicy(int tabLayoutPolicy)方法,设置在一次运行中不能放入所有的选项卡时,选项卡窗格使用的对选项卡进行布局安排的策略。可能的值为:
  •    JTabbedPane.WRAP_TAB_LAYOUT
  • JTabbedPane.SCROLL_TAB_LAYOUT,
  • JTabbedPane.WRAP_TAB_LAYOUT