在 JTabbedPane 中将选项卡置于前面

发布于 2024-07-30 01:36:25 字数 290 浏览 8 评论 0原文

当我在 JTabbedPane 对象上使用 setSelectedComponentsetSelectedIndex 时,该面板始终出现在我的 UI 中。 但是,有时与面板关联的选项卡仍然隐藏。 换句话说,选项卡不会滚动到选项卡式窗格的可见部分。

我怎样才能解决这个问题? 我尝试过俗气的选择一个索引,然后选择所需的索引,以及其他一些更优雅的东西,但是arrrgh!

如果可以的话请帮助我。

谢谢, 托德

When I use setSelectedComponent or setSelectedIndex on a JTabbedPane object, the panel always comes up in my UI. However, sometimes the tab associated with the panel remains hidden. In other words, the tab does not scroll to a visible portion of the tabbed pane.

How can I fix this? I have tried the cheesy select one index, then select desired index, as well as several other more elegant things, but arrrrgh!!

Help me if you can.

Thanks,
Todd

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

逐鹿 2024-08-06 01:36:25

我认为您的电话未在美国东部夏令时间打通。 用 SwingUtilities.invokeLater 包裹它

I think your call is not done on EDT. Wrap it with SwingUtilities.invokeLater

就像说晚安 2024-08-06 01:36:25

如果您有一个方法可以更改 swing 组件或其模型,因此必须在 EDT 上调用,但可以从后台线程调用,则可以使用以下模式。 这确保func始终在 EDT 上运行:

void func(final Type1 arg1, final Type2 arg2) {

    if (!SwingUtilities.isEventDispatchThread()) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                func(arg1, arg2);
            }
        });
        return;
    }
    // method code goes here
}

Here is a patter you can use if you have a method that alters swing components, or their models and so must be called on the EDT, but may be called from a background thread. This ensures func always runs on the EDT:

void func(final Type1 arg1, final Type2 arg2) {

    if (!SwingUtilities.isEventDispatchThread()) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                func(arg1, arg2);
            }
        });
        return;
    }
    // method code goes here
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文