2013-05-16 2 views
0

OK У меня есть рама размером 1280x720. Мне нужно разбить это и создать одну сторону слева, которая равна 1000x720, и правую сторону 280x720. Панель, которая теперь составляет 1000x720, мне нужно разделить ее снова на 1000x520 сверху и 1000x200 на нижней стороне. Я пробовал довольно долго. Это действительно поможет, если у вас есть какие-либо ссылки, чтобы помочь или поделиться своим опытом. Итак, его 3 области: # 1 1000x520. # 3 280x720 # 2 1000x200Мне нужно разделить свои панели 2 раза, и я не уверен, как это сделать

import javax.swing.JFrame; 
import javax.swing.JSplitPane; 
import javax.swing.UIManager; 

public class GamePanel extends JFrame{ 


    private static final long serialVersionUID = 1L; 
    public JSplitPane secondSplit; 
    SplitTableHand splitTableHand = new SplitTableHand(); 
    ChatPanel chatPanel = new ChatPanel(); 


    public GamePanel() { 

     secondSplit = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,splitTableHand, chatPanel); 

     secondSplit.setOneTouchExpandable(false); 
     secondSplit.setDividerLocation(1000); 
     this.setSize(1280, 720); 
     this.setResizable(false); 
     this.setDefaultCloseOperation(EXIT_ON_CLOSE); 
     //this.pack(); 
     this.setVisible(true); 
     getContentPane().add(secondSplit); 



    } 
    public static void main(String args[]){ 
     try { 
      UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); 
     } catch (Exception evt) {} 
     javax.swing.SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       GamePanel mainFrame = new GamePanel(); 

      } 
     }); 


    } 


} 

    import java.awt.Dimension; 

import javax.swing.JPanel; 
import javax.swing.JSplitPane; 


public class SplitTableHand extends JPanel{ 

    /** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 
    JSplitPane splitPane; 
    TablePanel tablePanel = new TablePanel(); 
    HandPanel handPanel = new HandPanel(); 

    public SplitTableHand() { 


     splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, tablePanel, handPanel); 

     splitPane.setOneTouchExpandable(false); 
     splitPane.setDividerLocation(550); 
     splitPane.setPreferredSize(new Dimension(1000, 720)); 
     add(splitPane); 
     splitPane.setVisible(true); 
    } 


} 

    import java.awt.BorderLayout; 
import java.awt.Color; 

import javax.swing.JLabel; 
import javax.swing.JPanel; 


public class TablePanel extends JPanel{ 

    private static final long serialVersionUID = 1L; 
    private JLabel label = new JLabel("LABEL"); 

    public TablePanel() { 
     setLayout(new BorderLayout());// we shall use absolute positioning for this 
     this.setSize(1000, 520); 
     this.setPreferredSize(getSize()); 
     this.setBackground(new Color(100,100,100)) ; 
     this.add(label); 
     this.setVisible(true); 
    } 
} 

    import java.awt.Color; 

import javax.swing.JButton; 
import javax.swing.JPanel; 


public class HandPanel extends JPanel{ 

    private static final long serialVersionUID = 1L; 
    JButton button; 
    public HandPanel() { 
     //default layout is flowlayout 
     this.setSize(1000, 200); 
     this.setPreferredSize(getSize()); 
     this.setBackground(new Color(150,150,50)) ; 

     for(int i = 0 ; i < 20;i++){ 
      String name = "Button"+ i; 
      button = new JButton(name); 
      this.add(button); 
      this.setVisible(true); 
     } 
    } 

} 

    import java.awt.Color; 
import java.awt.FlowLayout; 



import javax.swing.JButton; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 
import javax.swing.JTextArea; 
import javax.swing.JTextField; 


public class ChatPanel extends JPanel{ 
    /** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 
    private JTextArea chatArea = new JTextArea(10, 30); 
    private JTextField chatField = new JTextField(50); 
    JScrollPane scrollPane = new JScrollPane(chatArea); 
    JButton button ; 

    public ChatPanel() { 
     setLayout(new FlowLayout()); 
     this.setSize(720, 280); 
     this.setPreferredSize(getSize()); 
     this.setBackground(new Color(50,50,50)) ; 
     chatArea.setEditable(false); 
     chatArea.setLineWrap(true); 
     chatArea.setVisible(true); 
     chatField.setVisible(true); 
     button = new JButton("Button"); 
     button.setEnabled(true); 
     button.setVisible(true); 

     this.add(scrollPane); 
     this.add(chatField); 
     this.setVisible(true); 
     this.add(button); 
    } 

} 
+2

_не_ установленные границ на не изменяемый контейнер для [примера] (http://stackoverflow.com/a/12532237/230513); вместо 'pack()' и максимизировать. – trashgod

ответ

1

Прежде всего программа дает ошибку компиляции. Исправьте их. Вы должны продлить SplitTableHand с помощью JPanel. При этом ваша ошибка в GamePanel будет решена.

public class SplitTableHand extends JPanel 

Вторая точка находится в GamePanel конструктор класса, созданный topPanel и добавить его к раме вместо добавления secondSplit.

Измените конструктор GamePanel на

public GamePanel() { 
    secondSplit = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,splitTableHand, chatPanel); 

    secondSplit.setOneTouchExpandable(true); 
    secondSplit.setDividerLocation(150); 
    this.setSize(1280, 720); 
    this.setResizable(false); 
    this.setDefaultCloseOperation(EXIT_ON_CLOSE); 
    //this.pack(); 
    this.setVisible(true); 
    getContentPane().add(secondSplit); 
} 

В SplitTableHand классе также, вы должны добавить splitPane.

Добавить заявление в это конструкторе add(splitPane);

+0

thnx Я попробую сейчас: D – cotsios

+0

Спасибо, Равиндра, что очень помогло, я также установил правильный dividerLocation, и он работал, как я надеялся. Хотя я не могу видеть текстовую область или поле на панели, есть ли у вас какие-либо идеи, почему? – cotsios

+0

В классе 'ChatPanel' вместо прямого добавления' chatArea', добавьте 'scrollPane' –