0

好的,我有一个尺寸为 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);
    }

}
4

1 回答 1

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

于 2013-05-16T18:47:35.553 回答