我剛剛建成使用(Java Swing庫)這個網格,這是代碼:如何在網格旁插入JPanel?
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.*;
public class TestGrid02 extends JPanel {
private static final long serialVersionUID = 1L;
protected static final Color SELECTION_COLOR = Color.red;
private JPanel selectedPanel = null;
private Color originalColor = new Color(238,238,238) ;
private static final Dimension PREF_SIZE = new Dimension(50, 50);
public JPanel panel;
public JPanel panel_1;
public JFrame frame;
public TestGrid02() {
createMap(10,10);
}
public void createMap(int maxX,int maxY) {
String [ ][ ] map = new String [maxX][maxY];
for (int i = 0; i < maxX; i++) {
for (int j = 0; j < maxY ; j++) {
map [i][j] = "["+ i + ","+ j +"]";
JPanel panel = new JPanel();
add(panel);
panel.setPreferredSize(PREF_SIZE);
String name = String.format("[%d, %d]", i, j);
setLayout(new GridLayout(maxX,maxY, 1, 1));
setBackground(Color.GRAY);
panel.setName(name);
System.out.println(map [i][j]);
}
}
addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
JPanel panel = (JPanel) getComponentAt(e.getPoint());
if (panel == null || panel == TestGrid02.this) {
return;
}
if (selectedPanel != null) {
selectedPanel.setBackground(originalColor);
selectedPanel.removeAll();
selectedPanel.revalidate();
selectedPanel.repaint();
}
selectedPanel = panel;
selectedPanel.setBackground(SELECTION_COLOR);
selectedPanel.add(new JLabel(selectedPanel.getName()));
selectedPanel.revalidate();
selectedPanel.repaint();
}
});
}
private static void createAndShowGui() {
JFrame frame = new JFrame("Astar");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new TestGrid02());
frame.setLocationRelativeTo(null);
frame.setVisible(true);
frame.pack();
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}
但我要的是另一個JPanel
添加到包含例如2文本電網的「東風」區和1個按鈕,這樣的形象 - [1]:
我已經嘗試添加另一個面板,但它出現在網格的頂部。我怎麼解決這個問題?
*「如何解決這個問題?」*結合佈局。使用'GridLayout'作爲按鈕,然後用另一個佈局將該面板添加到(新的第二面板)。將您的其他面板添加到第二個面板。 – 2015-03-02 11:59:00