Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Java中的JPanel绘制矩形_Java_Jpanel - Fatal编程技术网

用Java中的JPanel绘制矩形

用Java中的JPanel绘制矩形,java,jpanel,Java,Jpanel,以下代码有什么问题?为什么矩形不显示 public class SynapsePermanencesViewer { public JPanel createContentPane(Region region) { JPanel synapseLayer = new JPanel(); synapseLayer.setLayout(null); Column[][] columns = region.getColumns(); JPanel redSquare = new JPanel()

以下代码有什么问题?为什么矩形不显示

public class SynapsePermanencesViewer {

public JPanel createContentPane(Region region) {
JPanel synapseLayer = new JPanel();
synapseLayer.setLayout(null);

Column[][] columns = region.getColumns();

JPanel redSquare = new JPanel();
Color color = new Color(128, 0, 0);
redSquare.setBackground(color);
int squareLength = 50;
redSquare.setSize(squareLength, squareLength);

// calculate the correct location
redSquare.setLocation(150, 150); // <==== This square isn't displaying WHY???

synapseLayer.setOpaque(true);
return synapseLayer;
}

public SynapsePermanencesViewer(Region region) {
JFrame frame = new JFrame("Synapse Permanences Viewer");

frame.setContentPane(this.createContentPane(region));

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}

public static void main(String[] args) {
Region parentRegion = new Region("parentRegion", 2, 2, 1, 20, 1);
Region childRegion = new Region("childRegion", 4, 4, 1, 20, 3);
RegionToRegionConnect connectType = new RegionToRegionRectangleConnect();
connectType.connect(childRegion, parentRegion, 0, 0);

SynapsePermanencesViewer object = new SynapsePermanencesViewer(parentRegion);
}
公共类SynapsePermanencesViewer{
公共JPanel createContentPane(区域){
JPanel synapseLayer=新的JPanel();
synapseLayer.setLayout(空);
Column[][]columns=region.getColumns();
JPanel redSquare=新的JPanel();
颜色=新颜色(128,0,0);
红色正方形。背景(颜色);
整数平方长度=50;
设置大小(平方长度,平方长度);
//计算正确的位置
设置位置(150150);//
  • 您不会将红方块添加到synapseLayer

  • 即使您添加了正方形,它也不会显示,因为synapseLayer使用空布局,因此面板的大小为(0,0)。因此,当您打包框架时,没有任何显示


  • 不要使用空布局!!!让布局管理器为您确定面板的大小,以便包()方法将正常工作。

    这可能是因为没有将redSquare添加到任何要显示的内容中。它只是在本地创建,并在方法返回时进行GCed。实际上,添加时确实显示了它,但我必须手动拉伸JFrame的大小。@Humungus,确切地说,这是不使用布局管理器时的问题。pack()无法工作,因此您需要手动调整框架大小。这不是一个好的设计,用户会抱怨。