Отделение JLayeredPanel - PullRequest
       11

Отделение JLayeredPanel

1 голос
/ 01 апреля 2012

У меня есть набор панелей через многоуровневую панель. Мне нужен разделитель между, чтобы отделить боковую панель от верхней панели и tabbedPanel. Я оставил буфер в 10 пикселей для его размещения. к сожалению, возможно из-за того, что это JLayeredPane, я не могу получить его для просмотра.

Есть ли способ определить местоположение X разделителя? как это должно решить. В любом случае, вот пример кода, из которого я удалил большую часть информации.

В качестве альтернативы, предлагаем другое решение полностью, при условии, что я могу получить определенное разделение на боковой панели и двух других панелях. Я уже пытался применить BorderLayout.WEST к боковой панели, но из-за того, что он JLayeredPane, он дает мне ошибки.

lPane = new JLayeredPane();
lPane.setBounds(0, 0, 1024, 768);

calendarFrame = new JFrame ("Calendar Frame");
calendarFrame.setPreferredSize(new Dimension(1024, 768));
calendarFrame.setLayout(null);

//Prepare side bar
sideBar = new JPanel ();
sideBar.setLayout(null);
sideBar.setBounds(0, 0, 210, 768);

//Prepare top bar
topBar = new JPanel ();
topBar.setLayout(null);
topBar.setBounds(220, 0, 774, 50);

//Create tabbed pane
tabbedPane = new JTabbedPane();
tabbedPane.setBounds(220, 50, 774, 700);
//Tab code here, but not needed for questuion

calendarFrame.add(lPane, BorderLayout.CENTER);
lPane.add(sideBar, new Integer(0), 0);
lPane.add(Box.createHorizontalStrut(5));
lPane.add(new JSeparator(SwingConstants.VERTICAL));
lPane.add(Box.createHorizontalStrut(5));
lPane.add(topBar, new Integer(1), 0);
lPane.add(tabbedPane, new Integer(2), 0);

1 Ответ

2 голосов
/ 02 апреля 2012

EDIT:

, если вы хотите создать фиксированный разрыв в 10 пикселей,

Вы можете использовать

только мое любопытство ты ...

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

public class EditableListExample extends JFrame {

    private static final long serialVersionUID = 1L;

    public EditableListExample() {
        super("Editable List Example");
        String[] data = {"a", "b", "c", "d", "e", "f", "g"};
        JList list = new JList(data);
        JScrollPane scrollList = new JScrollPane(list);
        scrollList.setMinimumSize(new Dimension(100, 80));
        Box listBox = new Box(BoxLayout.Y_AXIS);
        listBox.add(scrollList);
        listBox.add(new JLabel("JList"));
        DefaultTableModel dm = new DefaultTableModel();
        Vector<String> dummyHeader = new Vector<String>();
        dummyHeader.addElement("");
        dm.setDataVector(strArray2Vector(data), dummyHeader);
        JTable table = new JTable(dm);
        table.setShowGrid(false);
        table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        JScrollPane scrollTable = new JScrollPane(table);
        scrollTable.setColumnHeader(null);
        scrollTable.setMinimumSize(new Dimension(100, 80));
        Box tableBox = new Box(BoxLayout.Y_AXIS);
        tableBox.add(scrollTable);
        tableBox.add(new JLabel("JTable"));
        Container c = getContentPane();
        c.setLayout(new BoxLayout(c, BoxLayout.X_AXIS));
        c.add(listBox);
        c.add(new JSeparator(SwingConstants.VERTICAL));
        //c.add(new JLabel("test"));
        //c.add(new JSeparator(SwingConstants.HORIZONTAL));
        c.add(tableBox);
        pack();
        setVisible(true);
    }

    private Vector<Object> strArray2Vector(String[] str) {
        Vector<Object> vector = new Vector<Object>();
        for (int i = 0; i < str.length; i++) {
            Vector<Object> v = new Vector<Object>();
            v.addElement(str[i]);
            vector.addElement(v);
        }
        return vector;
    }

    public static void main(String[] args) {
        final EditableListExample frame = new EditableListExample();
        frame.addWindowListener(new WindowAdapter() {

            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
    }
}
...