0

OK 寸法が 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

2 番目のポイントは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 に答える