我需要拆分我的面板2次,我不知道该怎么做

时间:2013-05-16 18:36:19

标签: java swing jframe jpanel jsplitpane

好的我有一个尺寸为1280x720的框架。我需要将其拆分并在左侧创建一侧为1000x720,右侧为280x720。现在是1000x720的面板我需要将它再次拆分为顶部的1000x520和底部的1000x200。我已经尝试了很长一段时间。如果您有任何帮助或分享您的经验的链接,这将非常有用。 所以它的3个方面:#1 1000x520。 #3 280x720                 #2 1000x200

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

}

1 个答案:

答案 0 :(得分: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);

中添加一条语句