当前位置: 首页 > 知识库问答 >
问题:

Java外观JTabbedPane

仉俊能
2023-03-14

我正在我的一个项目中使用JTabbedPane,我正在尝试改变应用程序的外观。当我设置windows外观(以及任何其他外观)时,所有按钮、检查按钮等都将改变为它们应该的外观,但选项卡仍然看起来像默认的swing选项卡。下面是它的一个示例:

按钮和复选框看起来像windows组件,但选项卡看起来像默认的Swing。如果有用的话,我将使用JTabbedPane的一个子类,它在一个单独的类文件中定义。我的问题是如何使JTabbedPane中的选项卡看起来像windows选项卡?

这段代码为我模拟了这个问题。选项卡显示为swing,但按钮显示为不同的L&F:

import javax.swing.*;
import java.awt.*;
public class TabbedFrame
{
    private static JFrame window;
    private static JPanel pane;
    private static JTabbedPane tabs = new JTabbedPane();
    public static void main(String[] vars) 
    {
        try
        {
                UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
        } catch (Exception ee){
            ee.printStackTrace();
        }
        window = new JFrame("tabs");
        pane = new JPanel();
        window.setSize(200, 300);
        window.setLocation(100, 100);
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.setContentPane(pane);    
        Panel[] panes;
        panes = new Panel[2];
        panes[0] = new Panel();
        panes[1] = new Panel();
        panes[0].add(new Label("PANEL 1..................."));
        panes[1].add(new Label("PANEL 2 ....."));   
        tabs.addTab("tab 1", panes[0]);
        tabs.addTab("tab 2", panes[1]);
        tabs.setSize(480, 640);
        pane.add(tabs);
        pane.add(new JButton("test"));
        pane.add(new JCheckBox());
        pane.add(new JRadioButton());
        tabs.setBounds(20, 20, 200, 200);
        window.setVisible(true);    
    }
}

共有1个答案

燕超
2023-03-14

JTabbedPane是在设置PLAF之前创建的。至少有两种修复方法。

  1. 将创建选项卡窗格的行移动到中,并将其放在设置PLAF的调用之后。
  2. 调用SwingUtilities.updateComponentTreeUI(topLevelContainer),如嵌套布局示例所示。该示例允许用户在运行时更改PLAF。
 类似资料:
  • 问题内容: 我是编程的新手,但是我正在准备编写Java程序。在计划时,我正在尝试为其找到合适的GUI。我发现此页面带有GUI选项。我有两个问题: 这些会插入Java GUI构建器吗? 构建程序后更改GUI外观有多容易(或很难)? 问题答案: 更改程序的外观很简单: 在创建任何GUI创建代码之前。因此,您可以使用GUI构建器轻松创建所有GUI,然后只需在程序开始时调用它即可。 (请注意,在处理线程问

  • 问题内容: 我想覆盖Java外观。我只想显示不同的按钮。 我想要Windows Look and Feel的所有功能,但仅按钮有所不同。希望你明白我的意思。 还告诉我如何制作圆形的JtabbedPane ??? 问题答案: 自定义GUI类 调用您的自定义GUI类

  • 问题内容: 到目前为止,我有这个 我正在尝试使主外观看起来像雨云,但是将标题边框更改为Windows。 我的边界是这样的: 有可能吗?如果是的话,有人可以指出我在哪里看?我现在很困惑。:\ 谢谢。 问题答案: 我做完了 您必须创建UI的各个部分,然后调用UIManager.setLookAndFeel()来更改外观,然后创建其他部分。更像是骇客。

  • 主要内容:介绍,实现,Shape.java,Rectangle.java,Square.java,Circle.java,ShapeMaker.java,FacadePatternDemo.java外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。 这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。 介绍 意图:为子系统中的

  • 外观模式 亦称: Facade 意图 外观模式是一种结构型设计模式, 能为程序库、 框架或其他复杂类提供一个简单的接口。 问题 假设你必须在代码中使用某个复杂的库或框架中的众多对象。 正常情况下, 你需要负责所有对象的初始化工作、 管理其依赖关系并按正确的顺序执行方法等。 最终, 程序中类的业务逻辑将与第三方类的实现细节紧密耦合, 使得理解和维护代码的工作很难进行。 解决方案 外观类为包含许多活动

  • 关于外观属性 外观属性是一组在不改变对象基础结构的前提下影响对象外观的属性。外观属性包括填色、描边、透明度和效果。如果把一个外观属性应用于某对象而后又编辑或删除这个属性,该基本对象以及任何应用于该对象的其他属性都不会改变。 您可以在图层层次结构的任意层级设置外观属性。例如,如果您对一个图层应用投影效果,则该图层中的所有对象都将应用此投影效果。但是,如果您将其中的一个对象移出该图层,则此对象将不再具