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中默认提供的不同布局管理器
- 使用JTextArea
- 给它一个等宽字体,即Font.MONOSPACED
- 将您的文本行附加到JTextArea,类似于您在控制台中执行此操作的方式。
- 将JTextArea放入JScrollPane
-
瞧。 你完成了。
-
如果您需要使用JLabel,那么将它们放在一个JPanel中,该JPanel使用GridLayout,其中有足够的列来显示您的底行。
- 如果你这样做,你就会在每个其他单元格中放置空的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
但是,如果你必须打印这样的话
我是这样做的:
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课程,只需在一个组上发布一个问题,我会回复:)