2012-04-01 11 views
1

Ich habe eine Reihe von Panels über ein mehrschichtiges Fenster. Ich brauche ein Trennzeichen zwischen der SideBar von der TopBar und der TabbedPanel zu trennen. Ich habe einen Puffer von 10 Pixeln gelassen, damit er platziert werden kann. Leider, möglicherweise weil es ein JLayeredPane ist, kann ich es nicht sehen.Trennen von JLayeredPanel

Gibt es eine Möglichkeit, die X-Position des Separators zu definieren? wie das sollte es lösen. Wie auch immer, hier ist ein Beispiel des Codes, aus dem ich die meisten Informationen entfernt habe.

Alternativ bieten Sie eine andere Lösung vollständig an, solange ich eine definierte Trennung von der SideBar und anderen zwei Panels erhalten kann. Ich habe bereits versucht, das BorderLayout.WEST auf die SideBar anzuwenden, aber da es ein JLayeredPane ist, gibt es mir Fehler.

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); 
+2

für eine bessere Hilfe früher bearbeiten Sie Ihre Frage mit einem [SSCCE] (http://sscce.org/) – mKorbel

Antwort

2

EDIT:

wenn Sie feste 10pixels Lücke erstellen möchten,

können Sie

nur meine Neugier sind Sie ...

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); 
      } 
     }); 
    } 
}