JScrollPane格式化以显示Pascals Triangle

所以我想让我的Jscrollpane显示Pascals三角形。 我有这个:

labelPanel= new JPanel(); lRows = new JLabel[n]; for (int i=0;i<n;i++){ lRows[i]=new JLabel(Arrays.toString(tri.tri[i])); labelPanel.add(lRows[i]); } 

但这不是我想要的,我不知道如何解决这个问题,包括图片。 有帮助吗?

绘!

默认情况下, JPanel使用流布局。 要获得您正在寻找的垂直排列,您应该可以通过在labelPanel上使用垂直方向的BoxLayout来执行此labelPanel ,然后添加JLabel行。

 labelPanel= new JPanel(); //set this up to order things vertically labelPanel.setLayout(new BoxLayout(labelPanel, BoxLayout.Y_AXIS)); lRows = new JLabel[n]; for (int i=0;i 

我还扔了一行来​​像你的照片一样居中行。 Component来自java.awt包。

您可以阅读Java Tutorial中默认提供的不同布局管理器

  1. 使用JTextArea
  2. 给它一个等宽字体,即Font.MONOSPACED
  3. 将您的文本行附加到JTextArea,类似于您在控制台中执行此操作的方式。
  4. 将JTextArea放入JScrollPane
  5. 瞧。 你完成了。


  6. 如果您需要使用JLabel,那么将它们放在一个JPanel中,该JPanel使用GridLayout,其中有足够的列来显示您的底行。

  7. 如果你这样做,你就会在每个其他单元格中放置空的JLabel,以便单元格正确分支。

最简单的解决方案是旋转三角形使其看起来像:

 1 1 1 1 1 1 1 1 2 3 4 5 6 1 3 6 10 15 1 4 10 20 1 5 15 1 6 1 

但是,如果你必须打印这样的话 myTriangle

我是这样做的:

 for (int i = 0; i0){ sb.append(" "); len++; } //sb.append(" "); } TriangleRes[i] = new JLabel(sb.toString(), JLabel.CENTER); TriangleRes[i].setFont(new Font("Serif",Font.PLAIN,8)); sb = new StringBuilder(); } 

让我解释一下:我决定,我希望我的三角形打印的尺寸小于35,然后我检查过,这样一个三角形中的数字达到了10位数。 然后,当我向现有行添加下一个数字时,我检查了它的长度,虽然总长度还不是12,但我添加了空格。 这会导致您附加在图片上的三角形。

如果这是为博士Macyna课程,只需在一个组上发布一个问题,我会回复:)