jxmultisplitpane: как использовать? - PullRequest
2 голосов
/ 25 мая 2011

Я нашел Javadoc для JXMultiSplitPane , но я ничего не понимаю. Как бы я использовал это для отображения 5 JPanels, выровненных по горизонтали с разделителями между ними?

1 Ответ

4 голосов
/ 25 мая 2011

Это не дает точного ответа на ваш вопрос, но я надеюсь, что это полезно.

Пожалуйста, ознакомьтесь с этим фрагментом кода.Код был взят из презентации Swinglabs 2007 .Загрузка занимает некоторое время, поэтому наберитесь терпения.

//Simple case: creates a split pane with three
//compartments
JXMultiSplitPane sp = new JXMultiSplitPane();
sp.setModel(new DefaultSplitPaneModel());
sp.add(left, DefaultSplitPaneModel.LEFT);
sp.add(top, DefaultSplitPaneModel.TOP);
sp.add(bottom, DefaultSplitPaneModel.BOTTOM);

РЕДАКТИРОВАТЬ: Я понимаю ваши разочарования.Я хотел бы, чтобы весь сайт swingx возвращался в свое прежнее состояние, до того, как произошел "**" крах "java.net".Так много хороших проектов сейчас так сложно увидеть.

import java.awt.BorderLayout;
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import org.jdesktop.swingx.JXMultiSplitPane;
import org.jdesktop.swingx.MultiSplitLayout.Divider;
import org.jdesktop.swingx.MultiSplitLayout.Leaf;
import org.jdesktop.swingx.MultiSplitLayout.Split;

public class JXMultiSplitPaneTest extends JPanel
{
    private static final long serialVersionUID = 1L;

    public JXMultiSplitPaneTest()
    {
        //Simple case: creates a split pane with three compartments
        JXMultiSplitPane sp = new JXMultiSplitPane();
        JPanel p1 = new JPanel();
        p1.setBackground(Color.PINK);
        JPanel p2 = new JPanel();
        p2.setBackground(Color.YELLOW);
        JPanel p3 = new JPanel();
        p3.setBackground(Color.CYAN);
        JPanel p4 = new JPanel();
        p4.setBackground(Color.RED);
        JPanel p5 = new JPanel();
        p5.setBackground(Color.BLUE);

        sp.setModel(new FiveHorizontalSplitPaneModel(true));
        sp.add(p1, FiveHorizontalSplitPaneModel.P1);
        sp.add(p2, FiveHorizontalSplitPaneModel.P2);
        sp.add(p3, FiveHorizontalSplitPaneModel.P3);
        sp.add(p4, FiveHorizontalSplitPaneModel.P4);
        sp.add(p5, FiveHorizontalSplitPaneModel.P5);

        setLayout(new BorderLayout());
        add(sp);
    }

    public static void main(String[] args)
    {
        SwingUtilities.invokeLater(new Runnable()
        {
            @Override
            public void run()
            {
                JXMultiSplitPaneTest p = new JXMultiSplitPaneTest();
                JFrame f = new JFrame();
                f.setContentPane(p);
                f.setSize(800, 600);
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.setVisible(true);
            }
        });
    }
}

class FiveHorizontalSplitPaneModel extends Split
{
    //5 possible positions
    public static final String P1 = "1";
    public static final String P2 = "2";
    public static final String P3 = "3";
    public static final String P4 = "4";
    public static final String P5 = "5";

    public FiveHorizontalSplitPaneModel()
    {
        this(false);
    }

    public FiveHorizontalSplitPaneModel(boolean isEqualyWeighted)
    {
        setRowLayout(true);
        Leaf p1 = new Leaf(P1);
        Leaf p2 = new Leaf(P2);
        Leaf p3 = new Leaf(P3);
        Leaf p4 = new Leaf(P4);
        Leaf p5 = new Leaf(P5);
        if(isEqualyWeighted)
        {
            p1.setWeight(0.2);
            p2.setWeight(0.2);
            p3.setWeight(0.2);
            p4.setWeight(0.2);
            p5.setWeight(0.2);
        }
        setChildren(p1, new Divider(), p2, new Divider(),
                p3, new Divider(), p4, new Divider(), p5);
    }
}

Очень полезно проверить их код и перейти оттуда.Очень полезным для меня был код для DefaultSplitPaneModel.Я верю, что ты бы сделал это сам.В конце концов, это было не так сложно, как вы можете видеть в модели.Модель может быть закодирована в три строки, но я добавил функцию равного веса.

Рад помочь.Веселитесь:)

Я бы посоветовал вам скачать код, документацию и jar для этой библиотеки и объединить их в библиотеку NetBeans.Затем, когда вы захотите увидеть, например, как они закодировали определенный класс, вы удерживаете CTRL и щелкаете мышью по имени класса, и это приведет вас к его реализации.Делайте это всегда для всех библиотек с открытым исходным кодом.Выполнение этого при запуске экономит много времени в будущем.Если вам нужна помощь с этим, я с радостью помогу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...