我正在尝试设置JSplitPane分隔符的背景颜色.我写了下面的代码,但似乎没有用.
BasicSplitPaneUI ui = (BasicSplitPaneUI) splitPane.getUI();
BasicSplitPaneDivider divider = ui.getDivider();
divider.setBackground(Color.decode("#FFFACD"));
Run Code Online (Sandbox Code Playgroud)
我甚至尝试过这里给出的建议 如何将BackGround颜色设置为JSplitPane中的分隔符
有人可以指出错误或让我知道任何其他方法吗?
目前,当您尝试手动调整TopComponent的大小时,它将显示一条黑线,显示TopComponent的未来大小.
我想知道JComponent
这条黑线的背后是什么?我怎样才能访问它?
编辑
我的问题的第一部分得到了回答.附图中显示的组件是a JSplitPane
.
现在,我希望能够访问它(即获取JSplitPane
用于TopComponent
在netbeans平台中调整大小的实例).
我有以下代码行:
JSplitPane VPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,(new class1()),new JScrollPane(new class2()));
Run Code Online (Sandbox Code Playgroud)
我想class2只能垂直滚动吗?因为我的布局落后于其他位置.我正在使用GridBagLayout,现在改变布局为时已晚.有没有办法解决这个问题?
此代码应生成一个具有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) 我想摆脱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) 作为我写的应用程序的一部分,我需要将旧的(重量级)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)
我最初认为这是一个很容易解决的问题,但是在做了一些研究后,选项似乎表现为:
有没有更好的方法呢?或者它真的只是诉诸黑客的情况?我已经讨论了其他选项,例如,如果可用的替代SplitPane实现可行,但是没有重量级实现,如果轻量级实现避免问题,我会感到惊讶.
我正在寻找一个SWT小部件,其外观和行为类似于Swing的JPlitPane.在SWT中是否有这样的小部件,如果没有,最接近它的是什么?(一个窗格分为两个,可以移动两个部分之间的边框)
JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
scrollPane , scrollPane2);
Run Code Online (Sandbox Code Playgroud)
我想做一些非常微不足道的行动,但我不行.
每当我向任一个scrollPanes添加标签时 - 它们根本不显示任何内容.我可以在窗格中显示表格,但这些是通过构造函数添加的.很生气.
此外,如果splitPane只允许两个组件 - 如果我想将窗口分成四个部分怎么办?SplitPane的SplitPane?
感谢帮助,
我想实现一个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) 有没有办法限制分隔符的位置JSplitPane
?我想阻止它在任何一端附近结束.用户是否拖动分隔符,或者由于窗口大小调整而重置.
jsplitpane ×10
swing ×10
java ×9
awt ×1
boxlayout ×1
canvas ×1
jscrollbar ×1
jscrollpane ×1
netbeans ×1
swt ×1