OK У меня есть рама размером 1280x720. Мне нужно разбить это и создать одну сторону слева, которая равна 1000x720, и правую сторону 280x720. Панель, которая теперь составляет 1000x720, мне нужно разделить ее снова на 1000x520 сверху и 1000x200 на нижней стороне. Я пробовал довольно долго. Это действительно поможет, если у вас есть какие-либо ссылки, чтобы помочь или поделиться своим опытом. Итак, его 3 области: # 1 1000x520. # 3 280x720 # 2 1000x200Мне нужно разделить свои панели 2 раза, и я не уверен, как это сделать
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);
}
}
_не_ установленные границ на не изменяемый контейнер для [примера] (http://stackoverflow.com/a/12532237/230513); вместо 'pack()' и максимизировать. – trashgod