📜  Java摇摆 |带有示例的 JSplitPane

📅  最后修改于: 2022-05-13 01:55:09.790000             🧑  作者: Mango

Java摇摆 |带有示例的 JSplitPane

JSplitPane 是Java Swing 的一部分。 JSplitPane 仅用于划分两个组件。 JSplitPane 是用来调整组件大小的。通过使用 JSplitPane,用户可以手动调整组件的大小,直到其最小。 JSplitPane 可以有两种类型,一种是垂直拆分窗格,一种是水平拆分窗格

JSplitPane 的构造函数是:

  1. JSplitPane() :创建一个水平方向的新拆分窗格
  2. JSplitPane(int o) :创建一个新的拆分窗格,其中提到了方向。
  3. JSplitPane(int o, boolean r) :创建一个新的拆分窗格,其中提到了方向和重绘样式。
  4. JSplitPane(int o, boolean r, Component l, Component r) :创建一个新的拆分窗格,其中包含方向、重绘样式和提到的左右组件。
  5. JSplitPane(int o, Component l, Component r) :创建一个新的拆分窗格,其中提到了方向和左右组件。

JSplitPane 的常用功能有:

  1. getOrientation() :返回拆分窗格的方向
  2. getRightComponent() :返回拆分窗格的右组件
  3. getTopComponent() :返回拆分窗格的顶部组件
  4. isContinuousLayout() :返回连续布局属性
  5. getBottomComponent() :返回拆分窗格的底部组件
  6. setRightComponent(Component c) : 拆分窗格的右组件设置为 c
  7. setLeftComponent(Component c) : 拆分窗格的左侧组件设置为 c
  8. setTopComponent(Component c) : 拆分窗格的顶部组件设置为 c
  9. setBottomComponent(Component c) : 拆分窗格的底部组件设置为 c
  10. setUI(SplitPaneUI ui) :设置呈现此组件的外观对象。
  11. setResizeWeight(double v) :指定当拆分窗格的大小发生变化时如何分配额外的空间。
  12. setOneTouchExpandable(boolean n) :设置 oneTouchExpandable 属性的值,当该属性为 true 时,提供一个 UI 小部件,可以在单击时折叠或展开组件
  13. setDividerLocation(int l) :设置分隔线的位置。
  14. setDividerSize(int n) :设置分隔线的大小。
  15. setLastDividerLocation(int n) :设置分隔线的最后一个位置。
  16. setDividerLocation(double p) :将分隔线位置设置为 JSplitPane 大小的百分比。
  17. setContinuousLayout(boolean n) :设置 ContinuousLayout 属性的值,该值必须为 true 才能使子组件连续重新显示。
  18. remove(int index) :删除指定索引处的组件。
  19. remove(Component c) :从窗格中删除子组件。
  20. isOneTouchExpandable() :返回 oneTouchExpandable 属性。
  21. isContinuousLayout() :返回 ContinuousLayout 属性。
  22. getMinimumDividerLocation() :返回分隔线的最小位置。
  23. getMaximumDividerLocation() :返回分隔符的最大位置。
  24. getDividerSize() :返回分隔线的大小。
  25. getDividerLocation() :返回传递给 setDividerLocation 的最后一个值。
  26. addImpl(Component c, Object co, int i) :将指定的组件添加到此拆分窗格中。
  27. setUI(SplitPaneUI ui) :设置呈现此组件的外观对象。
  28. getUI() :返回呈现此组件的外观对象。
  29. paramString() :返回此 JSplitPane 的字符串表示形式。
  30. getUIClassID() :返回呈现此组件的外观类的名称。
  31. getAccessibleContext() :获取与此 JSplitPane 关联的 AccessibleContext。

以下程序将说明 JSplitPane 的使用
1.程序创建一个水平的JSplitPane来分隔两个文本区域

// Java Program to create a horizontal JSplitPane 
// to separate two text areas
import javax.swing.event.*;
import java.awt.*;
import javax.swing.*;
class solve extends JFrame {
  
    // frame
    static JFrame f;
  
    // text areas
    static JTextArea t1, t2;
  
    // main class
    public static void main(String[] args)
    {
        // create a new frame
        f = new JFrame("frame");
  
        // create a object
        solve s = new solve();
  
        // create a panel
        JPanel p1 = new JPanel();
        JPanel p = new JPanel();
  
        // create text areas
        t1 = new JTextArea(10, 10);
        t2 = new JTextArea(10, 10);
  
        // set texts
        t1.setText("this is first text area");
        t2.setText("this is second text area");
  
        // add text area to panel
        p1.add(t1);
        p.add(t2);
  
        // create a splitpane
        JSplitPane sl = new JSplitPane(SwingConstants.HORIZONTAL, p1, p);
  
        // add panel
        f.add(sl);
  
        // set the size of frame
        f.setSize(300, 300);
  
        f.show();
    }
}

输出 :

2.Program创建一个Vertical JSplitPane来分隔两个文本区域

// Java Program  to create a vertical 
// JSplitPane to separate two text areas
import javax.swing.event.*;
import java.awt.*;
import javax.swing.*;
class solve extends JFrame {
  
    // frame
    static JFrame f;
  
    // text areas
    static JTextArea t1, t2;
  
    // main class
    public static void main(String[] args)
    {
        // create a new frame
        f = new JFrame("frame");
  
        // create a object
        solve s = new solve();
  
        // create a panel
        JPanel p1 = new JPanel();
        JPanel p = new JPanel();
  
        // create text areas
        t1 = new JTextArea(10, 10);
        t2 = new JTextArea(10, 10);
  
        // set texts
        t1.setText("this is first text area");
        t2.setText("this is second text area");
  
        // add text area to panel
        p1.add(t1);
        p.add(t2);
  
        // create a splitpane
        JSplitPane sl = new JSplitPane(SwingConstants.VERTICAL, p1, p);
  
        // set Orientation for slider
        sl.setOrientation(SwingConstants.VERTICAL);
  
        // add panel
        f.add(sl);
  
        // set the size of frame
        f.setSize(300, 300);
  
        f.show();
    }
}

输出 :

2. Java程序创建嵌套的JSplitPane,其中之一是Touch Expandable

// Java Program to create nested JSplitPane, 
// one of them is one Touch Expandable
import javax.swing.event.*;
import java.awt.*;
import javax.swing.*;
class solve extends JFrame {
  
    // frame
    static JFrame f;
  
    // text areas
    static JTextArea t1, t2, t3, t4;
  
    // main class
    public static void main(String[] args)
    {
        // create a new frame
        f = new JFrame("frame");
  
        // create a object
        solve s = new solve();
  
        // create a panel
        JPanel p1 = new JPanel();
        JPanel p = new JPanel();
        JPanel p2 = new JPanel();
        JPanel p3 = new JPanel();
  
        // create text areas
        t1 = new JTextArea(10, 10);
        t2 = new JTextArea(10, 10);
        t3 = new JTextArea(10, 10);
        t4 = new JTextArea(10, 10);
  
        // set texts
        t1.setText("this is first text area");
        t2.setText("this is second text area");
        t3.setText("this is third text area");
        t4.setText("this is fourth text area");
  
        // add text area to panel
        p1.add(t1);
        p.add(t2);
        p2.add(t3);
        p3.add(t4);
  
        // create a splitpane
        JSplitPane sl = new JSplitPane(SwingConstants.VERTICAL, p1, p);
        JSplitPane s2 = new JSplitPane(SwingConstants.VERTICAL, p2, p3);
  
        // set Orientation for slider
        sl.setOrientation(SwingConstants.VERTICAL);
        s2.setOrientation(SwingConstants.VERTICAL);
  
        s2.setOneTouchExpandable(true);
  
        // set divider location
        sl.setDividerLocation(70);
  
        // set Layout for frame
        f.setLayout(new FlowLayout());
  
        // add panel
        f.add(sl);
        f.add(s2);
  
        // set the size of frame
        f.setSize(600, 300);
  
        f.show();
    }
}

输出:

注意:以上程序可能无法在在线编译器中运行,请使用离线 IDE