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