标签: jsplitpane

JSplitPane SetDividerLocation问题

我有一个JSplitPane,显示时应该将窗格分割50%.

现在,给setDividerLocation提供0.5(如建议)的参数,Java似乎将其视为正常数字而不是百分比.在中,分隔符,而不是到窗格的中间,几乎在左窗格的开头(窗格是垂直分割).有什么工作吗?

java jsplitpane

15
推荐指数
3
解决办法
2万
查看次数

检测JSplitPane分割器移动

有没有办法检测何时移动JSplitPane分隔线?有没有办法为分频器移动添加一个监听器?

JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
JSplitPane sp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, panel1, panel2);
// What do I put here to be notified if the divider in sp is moved?
Run Code Online (Sandbox Code Playgroud)

java swing jsplitpane

13
推荐指数
2
解决办法
4850
查看次数

使JPanel手动调整大小

我有一个JFramewith BorderLayout作为布局管理器.

在南边界,我有一个JPanel,我希望这个JPanel尺寸可以由用户调整,即用户可以点击边框的边缘并将其向上拖动以使其更大.

有什么方法你知道我能做到吗?

java swing jpanel jframe jsplitpane

12
推荐指数
2
解决办法
4万
查看次数

在JSplitPane上设置分隔符位置不起作用

我正在尝试设置JSplitPane的分隔符位置,但似乎无法正常工作.

这是一个SSCCE:

import java.awt.Color;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSplitPane;


public class JSplitProblem extends JFrame {

    public JSplitProblem(){
        JPanel upperPanel = new JPanel();
        upperPanel.setLayout(new BoxLayout(upperPanel, BoxLayout.X_AXIS));

        JPanel leftPanel = new JPanel();

        leftPanel.setLayout(new BoxLayout(leftPanel, BoxLayout.Y_AXIS));
        JPanel red = new JPanel();
        red.setBackground(Color.red);
        leftPanel.add(red);

        JPanel rightPanel = new JPanel();
        rightPanel.setLayout(new BoxLayout(rightPanel, BoxLayout.Y_AXIS));
        JPanel blue = new JPanel();
        blue.setBackground(Color.blue);
        rightPanel.add(blue);

        upperPanel.add(leftPanel);
        upperPanel.add(rightPanel);
        JPanel bottomPanel = new JPanel();
        bottomPanel.setBackground(Color.black);

        JSplitPane mainSplittedPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, upperPanel,bottomPanel);
        mainSplittedPane.setOneTouchExpandable(true);
        mainSplittedPane.setDividerLocation(0.5);

        this.add(mainSplittedPane);
        this.setSize(800,600);
        this.setResizable(true);
        this.setVisible(true);
    }

    public …
Run Code Online (Sandbox Code Playgroud)

java swing jsplitpane

11
推荐指数
2
解决办法
2万
查看次数

JTable#scrollRectToVisible与JSplitPlane组合显示错误的行

当我打电话时JTable#scrollRectToVisible,我想要显示的行在某些情况下隐藏在标题下方.

这个问题的其余部分仅在使用以下代码时才有意义.这是一个非常简单的程序,我用它来说明问题.它显示了一个UI JSplitPane,其上部包含一些控制按钮,下部包含一个JTable包裹在a中的JScrollPane(参见本文底部的屏幕截图).

import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;

public class DividerTest {

  private final JSplitPane fSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
  private final JTable fTable;
  private final JScrollPane fScrollPane;

  private boolean fHideTable = false;

  public DividerTest() {
    fTable = new JTable( createTableModel(50));
    fScrollPane = new JScrollPane(fTable);
    fSplitPane.setBottomComponent(fScrollPane);
    fSplitPane.setTopComponent(createControlsPanel());
    fSplitPane.setDividerLocation(0.5);
  }

  private JPanel createControlsPanel(){
    JPanel result = new JPanel();
    result.setLayout(new BoxLayout(result, BoxLayout.PAGE_AXIS));

    final JCheckBox checkBox …
Run Code Online (Sandbox Code Playgroud)

java swing jtable jsplitpane

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

如何设置JSplitPane-Divider折叠/展开状态?

我有一个带有JSplitPane的JFrame,它是OneTouchExpandable.我想记住JFlitPane在JFrame上的最后一个Divider位置处理,如果重新打开JFrame,则恢复Position.

它运行良好,但是如果用户通过oneTouchExpandable UI-Widget扩展一侧,那么我只存储处理中的'int'-Position并再次设置'int'-Position,结果是JFrame调整JSplitPane-Divider的大小跳转到折叠的Component preferredSize.

如何获取/设置崩溃/展开状态?

编辑

现在:调整大小行为是正常的,但它与第一​​次打开的行为不完全相同 - 因为现在我没有MinimumDividerLocation.我想要SnapIn,但需要进一步折叠状态.

public class SplitPaneState {
    public static void main( String[] args ) {
        SwingUtilities.invokeLater( new Runnable() {
            @Override
            public void run() {
                new SplitPaneState().createAndSowGUI();
            }
        });
    }

    private int position = -1;
    private Dimension size = new Dimension( 500, 300 );

    private void createAndSowGUI() {
        final JFrame frame = new JFrame("frame");
        frame.setSize( 200, 100 );
        frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
        frame.setLocationRelativeTo( null );
        frame.getContentPane().add( new JButton( new AbstractAction(){
           {
               putValue( Action.NAME, "Open Dialog" ); …
Run Code Online (Sandbox Code Playgroud)

java swing jsplitpane

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

在jsplitpane中的jscrollpane中调整canvas的问题

我正在使用NetBeans GUI编辑器创建一个应用程序,我希望在其中有一个JSplitPane,其顶部组件将Canvas在a中JScrollPane,而底部组件将是a JTextArea或类似的东西.

当我向下拉分隔器,从而增加顶部组件的大小时,一切似乎都调整得很好.

当我试图向上推动分频器时出现问题:分频器似乎在Canvas(也可能在它下面JScrollPane)下方.

我试图首选/最小/最大的尺寸的各种组合JScrollPaneCanvas,但似乎没有任何工作.

这是Netbeans生成的代码的一部分,可能与手头的问题有关:

jSplitPane1 = new javax.swing.JSplitPane();
jScrollPane1 = new javax.swing.JScrollPane();
canvas1 = new java.awt.Canvas();
jTextField1 = new javax.swing.JTextField();

jSplitPane1.setDividerLocation(300);
jSplitPane1.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);

jScrollPane1.setViewportView(canvas1);

jSplitPane1.setTopComponent(jScrollPane1);

jTextField1.setText("jTextField1");
jSplitPane1.setRightComponent(jTextField1);
Run Code Online (Sandbox Code Playgroud)

由于这是我的第一个问题,我不允许在问题中嵌入图像,因此我将发布链接:

红色箭头表示分隔线的位置.

在此先感谢您的时间.

java swing jscrollpane jsplitpane

7
推荐指数
2
解决办法
7837
查看次数

如何获取基于JScrollPane的窗口的可见部分的尺寸

这个JScrollPane基于窗口的顶部是JSplitPane.

getBounds(),getWidth(),getHeight()都返回窗口的全尺寸,包括无形的(滚动)的一部分.

我只想知道可见部分的尺寸.

java swing viewport jscrollpane jsplitpane

6
推荐指数
2
解决办法
8082
查看次数

如何自定义JSplitPane分隔线并保持单触箭头功能?

所以,我的问题归结为这个...默认的分隔符有点难看,而且我想为它添加一个标签(在I-want-text-on-it意义上,而不是在"添加JLabel"它的布局"感觉".我看到您可以更改拆分窗格分隔符上的边框,但是当我这样做时,它会删除我想要保留的单触箭头.

有关我如何兼顾两者的任何想法?

这是一个SSCCE,它演示了默认行为以及更改分隔符边框时发生的情况:

import javax.swing.*;
import javax.swing.plaf.basic.BasicSplitPaneDivider;
import javax.swing.plaf.basic.BasicSplitPaneUI;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class SplitPaneFun {
public static void main(String[] args) {

        //Here I'm messing around with the divider look. This seems to remove the one-touch arrows.  These blocked-out lines illustrate
        // what I'm doing to modify the divider's border.  Does this look right?:
    //------------------------------------------------------------------------------------------------
    JSplitPane withCustomDivider = new JSplitPane(JSplitPane.VERTICAL_SPLIT, new JPanel(), new JPanel());
    BasicSplitPaneDivider divider = ( (BasicSplitPaneUI) withCustomDivider.getUI()).getDivider();
    withCustomDivider.setOneTouchExpandable(true);
    divider.setDividerSize(15);
    divider.setBorder(BorderFactory.createTitledBorder(divider.getBorder(), "Custom border title -- …
Run Code Online (Sandbox Code Playgroud)

java swing jsplitpane

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

允许嵌套的JSplitPanes控制父JSplitPanes

下面是使用多个嵌套创建的简单布局的代码JSplitPanes.

import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSplitPane;

public class CDBurner extends JFrame {
    private static final long serialVersionUID = -6027473114929970648L;
    JSplitPane main, folder, rest;
    JPanel centeral, folders, favourites, tasks;
    JLabel label;

    private CDBurner() {
        super("Dan's CD Burner");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new GridLayout(1, 1));
        getContentPane().setBackground(Color.black);

        createLayout();

        pack();
        setMinimumSize(getSize());
        setExtendedState(getExtendedState() | JFrame.MAXIMIZED_BOTH);
        setVisible(true);
        requestFocus();
    }

    private void createLayout() {
        createPanels();
        rest = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, centeral, tasks);
        rest.setResizeWeight(1);
        rest.setContinuousLayout(true);
        rest.setOneTouchExpandable(true);
        folder = new JSplitPane(JSplitPane.VERTICAL_SPLIT, favourites, …
Run Code Online (Sandbox Code Playgroud)

java swing jsplitpane

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

标签 统计

java ×10

jsplitpane ×10

swing ×9

jscrollpane ×2

jframe ×1

jpanel ×1

jtable ×1

viewport ×1