我需要構建一個類似於這個圖像的屏幕。我有一個主面板,並在該面板中,我需要添加多列2垂直列和3水平。這些列是Jpanels。我試圖使用GridLayout,但我沒有成功。製作一個JPanel並在裏面添加多個JPanels
-1
A
回答
4
非常rarly將一個單一的佈局管理器做你想要的一切。你想在你可以/需要的地方開始使用複合佈局管理器。
這個例子既使用GridLayout
和GridBagLayout
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Insets;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.border.EmptyBorder;
public class BadLayout21 {
public static void main(String[] args) {
new BadLayout21();
}
public BadLayout21() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
}
JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(new TestPane());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
public class TestPane extends JPanel {
public TestPane() {
setBorder(new EmptyBorder(10, 10, 10, 10));
setLayout(new GridBagLayout());
JPanel leftPane = new JPanel(new GridLayout(2, 0, 0, 4));
leftPane.add(createPane(Color.RED));
leftPane.add(createPane(Color.RED));
JPanel leftMiddlePanel = createPane(Color.BLUE);
JPanel rightMiddlePanel = createPane(Color.BLUE);
JPanel rightPane = new JPanel(new GridLayout(2, 0, 0, 4));
rightPane.add(createPane(Color.GREEN));
rightPane.add(createPane(Color.GREEN));
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 0;
gbc.anchor = GridBagConstraints.NORTH;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.weightx = 1;
gbc.insets = new Insets(20, 20, 0, 0);
add(leftPane, gbc);
gbc.gridx = 3;
gbc.anchor = GridBagConstraints.NORTH;
gbc.insets = new Insets(20, 0, 0, 20);
add(rightPane, gbc);
gbc.weightx = 0;
gbc.gridx = 1;
gbc.weighty = 1;
gbc.fill = GridBagConstraints.VERTICAL;
gbc.anchor = GridBagConstraints.NORTH;
gbc.insets = new Insets(0, 0, 0, 10);
add(leftMiddlePanel, gbc);
gbc.gridx = 2;
gbc.insets = new Insets(0, 10, 0, 0);
add(rightMiddlePanel, gbc);
}
protected JPanel createPane(Color color) {
JPanel panel = new JPanel();
panel.setPreferredSize(new Dimension(25, 25));
panel.setBackground(color);
return panel;
}
@Override
public Dimension getPreferredSize() {
return new Dimension(200, 200);
}
}
}
1
我認爲這將是很難把所有的面板,直接在一個大的面板。可能有多種解決方案。如將主面板分成四個獨立(垂直)面板並將最終面板添加到這四個子面板。或者如怪異的建議,從一個邊界佈局開始,首先創建一個左側子面板,中間子面板和右側子面板,每個面板都有自己的佈局管理器。在這些子面板中,您可以放置最終的面板。
儘管確切的目的或目標是對我來說有點模糊,現在,我希望可以用我的suggesten。
相關問題
- 1. JFrame刪除JPanels並添加一個新的JPanel
- 2. 向JFrame添加多個JPanels
- 3. 在jpanel裏添加一個圖片在動作監聽器裏面
- 4. 在兩個不同的JPanel上繪製矩形,然後在JFrame上添加JPanels
- 5. 如何在另一個JPanel的中心添加一個JPanel?
- 6. 動態地添加到JPanels一個JFrame
- 7. 無法在JFrame中添加多個JPanel,
- 8. 添加一個JPanel到一個ActionListener
- 9. 製作一個JPanel廣場
- 10. 多個JComboBox在一個JPanel
- 11. 將JPanel添加到另一個類中的另一個JPanel
- 12. 將JPanel從一個類添加到另一個類中的JPanel
- 13. 將JPanel添加到另一個JPanel添加填充
- 14. 在多個JPanel中繪製
- 15. java swing - 在同一個jframe上繪製多個jpanels
- 16. JPanel在添加到多個其他JPanel時消失
- 17. JPanel的背景圖片不適用於一個JPanel裏面
- 18. 調整大小一個JScrollPane裏面一個JPanel,清除我畫上的JPanel
- 19. 試圖將多個JPanel添加到JFrame
- 20. 將JPanel添加到多個JFrame中
- 21. 將多個jPanel添加到jFrame中
- 22. 如何將多個JComponents添加到JPanel?
- 23. 將多個JPanel添加到JFrame中
- 24. 延時向jpanel添加多個形狀
- 25. 實時向JFrame添加多個JPanel
- 26. JTree與多個JPanels
- 27. 在另一個裏面有多個塊?
- 28. 在java中添加一個jpanel到jpanel中
- 29. 如何在另一個JPanel中添加隨機座標的JPanel?
- 30. 如何在JDialog的JPanel中添加MapView以及另一個JPanel
嘗試此邊框佈局 – Freak
邊框佈局對此設計無用,因爲在區域中我只能添加一個組件。 – AlexGo
@AlexGo但是你可以使用'BorderLayout'作爲基礎。兩個側面板可以在自己的面板和另一個面板中的兩個中心面板(3個面板都在一起)出口,這意味着您可以獲得East,Center和West .. – MadProgrammer