JScrollPane格式化显示Pascals Triangle

时间:2014-04-24 20:02:50

标签: java swing layout jscrollpane

所以我想让我的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]);
}

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

Painted!

3 个答案:

答案 0 :(得分:2)

默认情况下,JPanel使用流式布局。要获得您正在寻找的垂直排列,您应该可以使用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<n;i++){
    lRows[i]=new JLabel(Arrays.toString(tri.tri[i]));
    //to center your label, just set the X alignment
    lRows[i].setAlignmentX(Component.CENTER_ALIGNMENT)
    labelPanel.add(lRows[i]);
}

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

您可以在Java Tutorial

中查看默认情况下可用的不同布局管理器

答案 1 :(得分:0)

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


  6. 如果您需要使用JLabel,请将它们放在使用GridLayout的JPanel中,并使用足够的列来显示您的底行。

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

答案 2 :(得分:0)

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

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; i<n; i++){
    for (int j = 0; j<Triangle.trojkat[i].length; j++){
        sb.append(Triangle.trojkat[i][j]);
        len = String.valueOf(Triangle.trojkat[i][j]).length();
        while (12-len>0){
            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课程,只需在小组上发帖提问,我会回复:)