GVKun编程网logo

JTabbedPane:如果堆叠/ Nimbus,则避免对标签进行自动重新排序(堆叠标记)

29

在这篇文章中,我们将带领您了解JTabbedPane:如果堆叠/Nimbus,则避免对标签进行自动重新排序的全貌,包括堆叠标记的相关情况。同时,我们还将为您介绍有关Ajaxtabbedpanel标签、

在这篇文章中,我们将带领您了解JTabbedPane:如果堆叠/ Nimbus,则避免对标签进行自动重新排序的全貌,包括堆叠标记的相关情况。同时,我们还将为您介绍有关Ajax tabbedpanel标签、com.intellij.ui.TabbedPaneImpl的实例源码、Java JTabbedPane允许Tab仅在true时切换到、Java Swing实战(一)JFrame和JTabbedPane容器的知识,以帮助您更好地理解这个主题。

本文目录一览:

JTabbedPane:如果堆叠/ Nimbus,则避免对标签进行自动重新排序(堆叠标记)

JTabbedPane:如果堆叠/ Nimbus,则避免对标签进行自动重新排序(堆叠标记)

JTabbedPane正是我要达到的目的。我的水平空间非常有限,所以我的Tab可以叠放,这完全可以。

但是默认行为是,如果用户单击选项卡,则* 选项卡将重新排序,以使活动的选项卡变为低位 *s。从理论上看,非常直观和合乎逻辑的内容是实际使用中的噩梦,因为用户会松散地了解“哪个是哪个”。一次又一次地告诉我,这简直是令人困惑。

我想应该有可能重写UI的某些方法来避免这种行为(并且我不在乎纸卡是否可能在物理上实现:-)。

有谁知道我需要在哪里做?我正在使用Nimbus LAF,它似乎并没有使它更容易。

(我曾考虑过使用radiobuttons /
cardLayout,但是我需要在选项卡标题中放置一个自定义面板,并且radiobuttons只能有一个字符串或图标。对于JToggleButton来说也是一样的。)

任何提示都非常欢迎!

感谢和亲切的问候,菲利普

答案1

小编典典

好的,我发现了问题。在

package javax.swing.plaf.basic.BasicTabbedPaneUI;

它说像这样

// Rotate run array so that selected run is first            if (shouldRotateTabRuns(tabPlacement)) {                rotateTabRuns(tabPlacement, selectedRun);            }

可惜的是,似乎并没有容易的方法来改变它。

尽管如果您省略了对此事的调用rotateTabRuns(tabPlacement,selectedRun);或更改shouldRotateTabRuns(tabPlacement),应该没问题。但是,这样做必须重写一大堆类……具体取决于您使用的是哪一个类。

像这样继承

Basic > Synth > Nimbus

在每个L&F级别上,都有几个要自定义的类…我没有数。

希望能帮助到你!:D

编辑 哦,是的… @mkorbel已经提供了该 aephyr 的解决方案,为什么不使用它呢?

Ajax tabbedpanel标签

Ajax tabbedpanel标签

总结

以上是小编为你收集整理的Ajax tabbedpanel标签全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

com.intellij.ui.TabbedPaneImpl的实例源码

com.intellij.ui.TabbedPaneImpl的实例源码

项目:intellij-ce-playground    文件:GitCompareBranchesDialog.java   
public GitCompareBranchesDialog(@NotNull Project project,@NotNull String branchName,@NotNull String currentBranchName,@NotNull GitCommitCompareInfo compareInfo,@NotNull GitRepository initialRepo,boolean dialog) {
  myProject = project;

  String rootString;
  if (compareInfo.getRepositories().size() == 1 && GitUtil.getRepositoryManager(myProject).moreThanOneRoot()) {
    rootString = " in root " + DvcsUtil.getShortRepositoryName(initialRepo);
  }
  else {
    rootString = "";
  }
  myTitle = String.format("Comparing %s with %s%s",currentBranchName,branchName,rootString);
  myMode = dialog ? Mode.MODAL : Mode.FRAME;

  JPanel diffPanel = new GitCompareBranchesDiffPanel(myProject,compareInfo);
  myLogPanel = new GitCompareBranchesLogPanel(myProject,compareInfo,initialRepo);

  myTabbedPane = new TabbedPaneImpl(SwingConstants.TOP);
  myTabbedPane.addTab("Log",VcslogIcons.Branch,myLogPanel);
  myTabbedPane.addTab("Diff",AllIcons.Actions.Diff,diffPanel);
  myTabbedPane.setKeyboardNavigation(TabbedPaneImpl.DEFAULT_PREV_NEXT_SHORTCUTS);
}
项目:tools-idea    文件:GitCompareBranchesDialog.java   
@Override
protected JComponent createCenterPanel() {
  myLogPanel = new GitCompareBranchesLogPanel(myProject,myBranchName,myCurrentBranchName,myCompareInfo,myInitialRepo);
  JPanel diffPanel = new GitCompareBranchesDiffPanel(myProject,myCompareInfo);

  TabbedPaneImpl tabbedPane = new TabbedPaneImpl(SwingConstants.TOP);
  tabbedPane.addTab("Log",Git4ideaIcons.Branch,myLogPanel);
  tabbedPane.addTab("Diff",diffPanel);
  tabbedPane.setKeyboardNavigation(TabbedPaneImpl.DEFAULT_PREV_NEXT_SHORTCUTS);
  return tabbedPane;
}

Java JTabbedPane允许Tab仅在true时切换到

Java JTabbedPane允许Tab仅在true时切换到

我在用户单击选项卡时执行了一些验证.如果validation == true,则允许选项卡显示(或切换到).现在我正在使用StateChanged事件进行验证.问题是,当您单击选项卡时,它会显示选项卡内容,如果验证== false,则会切换回上一个选项卡.除非验证== true,否则我不希望它切换到.我该怎么做,我是在检查错误的事件吗?谢谢你们

最佳答案
如果validation = false,则可以使用tab.setEnabledAt(index,false)方法禁用选项卡,如果validation = true,true)将其重新打开.

编辑:禁用选项卡会使其灰显,因此用户无法在第一时间单击它,这意味着您必须在用户单击选项卡之前执行验证检查.

Java Swing实战(一)JFrame和JTabbedPane容器

Java Swing实战(一)JFrame和JTabbedPane容器

概述:

项目是一个桌面程序,涉及标签和按钮组件、布局管理器组件、面板组件、列表框和下拉框组件等组件,以及Swing事件处理机制。

下面先从最基础的界面开始。

/**
 * @author: lishuai
 * @date: 2018/11/26 13:51
 */
public class WeimingSyncApplets {
    public static void main(String[] args) {
        // 面板组件
        JPanel taskPanel = new JPanel();
        JPanel dbPanel = new JPanel();
        JTabbedPane tabbedPane = buildJTabbedPane(taskPanel, dbPanel);
        buildFrame(tabbedPane);
    }

    private static JTabbedPane buildJTabbedPane(JPanel taskPanel, JPanel dbPanel) {
        // 选项卡面板
        JTabbedPane tabbedPane = new JTabbedPane();
        // 通过BorderFactory来设置边框的特性
        tabbedPane.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
        tabbedPane.add("执行任务", taskPanel);
        tabbedPane.add("数据源配置", dbPanel);
        return tabbedPane;
    }

    private static void buildFrame(JComponent component) {
        // 窗体容器
        JFrame frame = new JFrame("数据同步工具");
        frame.add(component);
        //  JFrame.EXIT_ON_CLOSE  退出
        //  JFrame.HIDE_ON_CLOSE  最小化隐藏
        frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
        // 设置布局
        frame.getContentPane().setLayout(new BorderLayout());
        frame.getContentPane().add(BorderLayout.CENTER, component);
        // 设置窗口最小尺寸
        frame.setMinimumSize(new Dimension(1060, 560));
        // 调整此窗口的大小,以适合其子组件的首选大小和布局
        frame.pack();
        // 设置窗口相对于指定组件的位置
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
        // 设置窗口尺寸是否固定不变
        frame.setResizable(true);
    }
}

效果如图:

今天关于JTabbedPane:如果堆叠/ Nimbus,则避免对标签进行自动重新排序堆叠标记的分享就到这里,希望大家有所收获,若想了解更多关于Ajax tabbedpanel标签、com.intellij.ui.TabbedPaneImpl的实例源码、Java JTabbedPane允许Tab仅在true时切换到、Java Swing实战(一)JFrame和JTabbedPane容器等相关知识,可以在本站进行查询。

本文标签: