我需要分裂我的面板2次,我不知道如何做到这一点



好的,我有一个框架,尺寸:1280x720。我需要拆分它,创建左边的一边是1000x720,右边是280x720。现在的面板是1000x720,我需要再次拆分它,顶部为1000x520,底部为1000x200。我已经试了很长时间了。如果你有任何链接来帮助或分享你的经验,那将会很有帮助。所以它有3个区域:#1 1000x520。# 3 280 x720# 2 1000 x200型

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

首先你的程序给出了编译错误。修复它们。你必须用JPanel扩展SplitTableHand。有了这个,你的错误在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);中添加一条语句

相关内容

  • 没有找到相关文章

最新更新