好的,我有一个框架,尺寸: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);
中添加一条语句