Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为JTabbedPane创建自定义外观_Java_Swing_Look And Feel_Jtabbedpane - Fatal编程技术网

Java 为JTabbedPane创建自定义外观

Java 为JTabbedPane创建自定义外观,java,swing,look-and-feel,jtabbedpane,Java,Swing,Look And Feel,Jtabbedpane,我试图创建一个JTabbedPane,它总是用选项卡填充组件的顶部。像这样: 这就是它现在的样子: 以及该部分的代码: JTabbedPane tab = new JTabbedPane(); tab.addTab("Items", items); tab.addTab("Categories", categories); setContentPane(tab); //Also tried to create a JTabbedPane class a

我试图创建一个JTabbedPane,它总是用选项卡填充组件的顶部。像这样:

这就是它现在的样子:

以及该部分的代码:

    JTabbedPane tab = new JTabbedPane();
    tab.addTab("Items", items);
    tab.addTab("Categories", categories);
    setContentPane(tab);
    //Also tried to create a JTabbedPane class and see if i could remove the labels and manually add two buttons to the top but without success.
我希望标签尽可能多地使用空间,而不收缩面板的内容。
因此,有谁能告诉我如何定制JTabbedPane、look and feed或仅仅是选项卡本身,以便做到这一点。

最简单的方法可能是创建您自己的组件:

  • 创建使用边框布局的“主”面板
  • 创建一个使用网格布局的面板,并将按钮添加到此面板。然后使用
    BorderLayout.PAGE\u START
    将此面板添加到“主”面板。单击这些按钮时,每个按钮都将显示一个特定的面板
  • 创建第二个使用
    卡片布局的面板。使用
    BorderLayout.CENTER
    将此面板添加到“主”面板。每个面板将代表一个选项卡

  • 另一个选项是查看
    选项卡paneui
    ,找到一种方法来绘制每个选项卡,并根据您的需求修改代码

    这就是我在一开始的情况,两个按钮和两个面板,但是代码看起来不是很好,所以我尝试缩短它。虽然这个解决方案似乎更好。为什么GridLayout而不仅仅是X_轴上的BoxLayout?它工作得很好,尽管我不得不添加一个新参数来存储按钮的标题,因为我调用super(text)时;对于新的button类,按钮的大小将更改。