标签: jsplitpane

如何更改JSplitPane分隔线的颜色或背景颜色?

我正在尝试设置JSplitPane分隔符的背景颜色.我写了下面的代码,但似乎没有用.

        BasicSplitPaneUI ui = (BasicSplitPaneUI) splitPane.getUI();
        BasicSplitPaneDivider divider = ui.getDivider();
        divider.setBackground(Color.decode("#FFFACD"));
Run Code Online (Sandbox Code Playgroud)

我甚至尝试过这里给出的建议 如何将BackGround颜色设置为JSplitPane中的分隔符

有人可以指出错误或让我知道任何其他方法吗?

java swing jsplitpane

3
推荐指数
1
解决办法
5810
查看次数

TopComponent调整大小的行为

目前,当您尝试手动调整TopComponent的大小时,它将显示一条黑线,显示TopComponent的未来大小.

在此输入图像描述

我想知道JComponent这条黑线的背后是什么?我怎样才能访问它?


编辑

我的问题的第一部分得到了回答.附图中显示的组件是a JSplitPane.

现在,我希望能够访问它(即获取JSplitPane用于TopComponent在netbeans平台中调整大小的实例).

java swing netbeans jsplitpane netbeans-platform

3
推荐指数
1
解决办法
686
查看次数

JScrollPane-只有垂直滚动?

我有以下代码行:

JSplitPane VPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,(new class1()),new JScrollPane(new class2()));
Run Code Online (Sandbox Code Playgroud)

我想class2只能垂直滚动吗?因为我的布局落后于其他位置.我正在使用GridBagLayout,现在改变布局为时已晚.有没有办法解决这个问题?

java swing jscrollpane jsplitpane jscrollbar

3
推荐指数
1
解决办法
5316
查看次数

使用JFrame.pack()时如何使用均匀放置的分隔线布局两个JSplitPanes

此代码应生成一个具有2个垂直分割窗格的框架,该窗格应初始化,以便均匀放置分隔线.

但是,这仅在帧大小固定时才有效.这似乎是因为分割窗格的首选高度之和对于我的屏幕来说太大了(1280x1024).getSize()报告的JFrame高度最终大于我的屏幕高度,因此分隔线放置得很糟糕.

使用frame.pack()时应该怎么做?

import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;

public class TestSplitPanels extends JPanel {


public static void main(String[] args) {
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

    TestSplitPanels tps = new TestSplitPanels();

    frame.setContentPane(tps);

    frame.pack();

    // uncomment this and the dividers are nicely positioned
    // frame.setSize(600,600);

    frame.setVisible(true);

}

public TestSplitPanels() {
    JTable jt1 = new JTable();

    JTable jt2 = new JTable();

    JTable jt3 = new JTable();

    // wrap every JTable in a scroll pane

    JScrollPane jsr1 = new JScrollPane();
    jsr1.setViewportView(jt1);

    JScrollPane …
Run Code Online (Sandbox Code Playgroud)

java swing jsplitpane

2
推荐指数
1
解决办法
5138
查看次数

Java:jsplitpane和boxlayout的问题

我想摆脱jsplitpanes左边的空白区域:

截图

这是我的代码:

getContentPane().setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS));

JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
splitPane.add(downloadsPanel);
splitPane.add(filesPanel);

JSplitPane splitPane2 = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
splitPane2.add(processingPanel);
splitPane2.add(messagePanel);

JSplitPane splitPane3 = new JSplitPane(JSplitPane.VERTICAL_SPLIT);

splitPane3.add(splitPane);
splitPane3.add(splitPane2);

getContentPane().add(addPanel);
getContentPane().add(splitPane3);
Run Code Online (Sandbox Code Playgroud)

java swing jsplitpane boxlayout

2
推荐指数
1
解决办法
975
查看次数

JSplitPane和Canvas

作为我写的应用程序的一部分,我需要将旧的(重量级)Canvas与swing组件混合 - 特别是将它们嵌套在JSplitPane中.但是,当我这样做时,分隔符拒绝在任何地方调整大小,好像两个画布都不会接受缩小尺寸.因此,证明该问题的代码如下:

JFrame frame = new JFrame();
JSplitPane pane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, new Canvas(), new Canvas());
pane.setResizeWeight(0.5);
frame.add(pane);
frame.pack();
frame.setVisible(true);
Run Code Online (Sandbox Code Playgroud)

我最初认为这是一个很容易解决的问题,但是在做了一些研究后,选项似乎表现为:

  • 改为使用JPanel(并不总是一个选项,就像我使用vlcj直接渲染到画布上一样)
  • 插入可能在某些情况下有用的狡猾的黑客攻击

有没有更好的方法呢?或者它真的只是诉诸黑客的情况?我已经讨论了其他选项,例如,如果可用的替代SplitPane实现可行,但是没有重量级实现,如果轻量级实现避免问题,我会感到惊讶.

java swing canvas awt jsplitpane

2
推荐指数
1
解决办法
813
查看次数

你如何在SWT中使用Swing的JSplitPane?

我正在寻找一个SWT小部件,其外观和行为类似于Swing的JPlitPane.在SWT中是否有这样的小部件,如果没有,最接近它的是什么?(一个窗格分为两个,可以移动两个部分之间的边框)

swing swt jsplitpane

2
推荐指数
1
解决办法
2179
查看次数

splitPane上的Swing行为

  JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
             scrollPane , scrollPane2);
Run Code Online (Sandbox Code Playgroud)

我想做一些非常微不足道的行动,但我不行.

每当我向任一个scrollPanes添加标签时 - 它们根本不显示任何内容.我可以在窗格中显示表格,但这些是通过构造函数添加的.很生气.

此外,如果splitPane只允许两个组件 - 如果我想将窗口分成四个部分怎么办?SplitPane的SplitPane?

感谢帮助,

java swing jsplitpane

2
推荐指数
1
解决办法
289
查看次数

检测何时拖动JSplitPane分隔符,而不是调整组件的大小

我想实现一个JSplitPane(水平分割),其中右侧组件具有恒定宽度,即当拖动分隔线时,它将跳回到正确的大小,除非将分隔线拖得足够正确,在这种情况下最右边的组件将具有零宽度.

要重新显示正确的组件,用户可以将分隔线拖到左侧足够远的位置.

我有这个大多数工作,但当我调整窗口大小取决于我改变窗口大小的多少和多快,分频器跳跃显示或隐藏正确的组件,我想要的是它不应该改变'状态'即如果右侧组件不可见,那么它应该保持不可见,反之亦然.

我已经尝试了很多东西,但主要的障碍是似乎没有办法知道天气,用户通过鼠标拖动分隔线,或者代码(我的分频器逻辑和/或JSplitPane内部逻辑)改变了分频器的位置.

这是一个自包含的测试用例,运行它并尝试拖动水平分隔线以隐藏和显示右侧面板,并使用隐藏/显示的那些尝试调整窗口大小.

在Mac OS X Java 1.6(Apple)或Java 7(Oracle)上无法正常工作.使用Oracle的东西,渲染速度要慢得多,而且问题更严重.缓慢调整窗口大小可以正常工作,但快速调整窗口大小会导致问题.

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;

import javax.swing.*;

import net.miginfocom.swing.MigLayout;

public class SplitTest {
    public static class MySplitPane extends JSplitPane {
        boolean m_RightCollapsed;

        public MySplitPane(int orientation, JComponent left, JComponent right) {
            super(orientation, left, right);

            addPropertyChangeListener(new PropertyChangeListener() {

                @Override
                public void propertyChange(PropertyChangeEvent evt) {

                }
            });
            addComponentListener(new ComponentListener() {

                @Override
                public void componentShown(ComponentEvent e) …
Run Code Online (Sandbox Code Playgroud)

java swing jsplitpane

2
推荐指数
1
解决办法
6148
查看次数

如何在JSplitPane中限制分隔符的位置?

有没有办法限制分隔符的位置JSplitPane?我想阻止它在任何一端附近结束.用户是否拖动分隔符,或者由于窗口大小调整而重置.

java swing jsplitpane

1
推荐指数
1
解决办法
3294
查看次数