Đối với bài tập về nhà của tôi cho Tapestry, tôi phải hiển thị một viên kim cương trên bàn từ mảng chuỗi. Dưới đây là những gì tôi có cho đến nay:Làm thế nào để vẽ kim cương bằng cách sử dụng thành phần tấm thảm t: loop
đang Index.java
public class Index
{
@Property
private Integer number;
@Property
private String [] table;
public Index() {
number = 9;
int temp = 0;
String tmp = "-";
table = new String[number * number];
if(singleCell == null)
singleCell="";
for (int i = 0; i < number; i++) {
for (int j = 0; j < number; j++) {
table[temp] = tmp;
temp++;
}
}
}
@OnEvent(component="diamond")
Object onDiamondLink() {
String swapValue = "*";
int sum = number/2 ;
int x1 = number-1;
int sumY = number/2;
int y1 = number+1;
int temp = x1 + sumY;
for (int i = 0; i < table.length; i++) {
table[i] = "-";
}
for (int i = 0; i < table.length; i++) {
if(i == sum) {
table[i] = swapValue;
sum = sum + x1;
}
if (i == sumY) {
table[i] = swapValue;
sumY = sumY + y1;
}
}
System.out.println("link diamond is activate");
return null;
}
public boolean isStartRow(){
return (myIndex%9 ==0);
}
public boolean isEndRow(){
return (myIndex%9 == 8);
}
public String getStartTR(){
return "<tr >";
}
public String getEndTR(){
return "</tr>";
}
mã của index.tml:
<t:actionlink t:id="diamond" >Diamond table</t:actionlink>
<br/>
<h1>Result:</h1>
<table border="1" >
<t:loop t:source="table" t:value="singleCell" index="MyIndex">
<t:if test="startRow">
<t:outputraw value="startTR"/>
</t:if>
<td width="20px">
${singleCell}
</td>
<t:if test="endRow">
<t:outputraw value="endTR"/>
</t:if>
</t:loop>
</table>
Mã này tạo ra sản lượng này:
- - - - * - - - -
- - - * - * - - -
- - * - - - * - -
- * - - - - - * -
* - - - - - - - *
- - - - - - - * -
* - - - - - * - -
- * - - - * - - -
- - * - * - - - -
Các đúng sản lượng tôi cần là:
- - - - * - - - -
- - - * - * - - -
- - * - - - * - -
- * - - - - - * -
* - - - - - - - *
- * - - - - - * -
- - * - - - * - -
- - - * - * - - -
- - - - * - - - -
Bất kỳ ý tưởng nào cũng sẽ hữu ích.
Bạn gần như đóng đinh nó, Điều duy nhất bạn bỏ qua là RowCount - ColCount == number/2 một phần, hãy tham khảo câu trả lời của tôi bên dưới. Nó sẽ được rõ ràng cho bạn ở đó. – nikhil
Tôi khá thất vọng về hai câu trả lời. Không phải vì nội dung, nhưng vì nguyên tắc .. câu hỏi rõ ràng nói "đây là bài tập về nhà của tôi" và các bạn chỉ đưa ra mã mà không có bất kỳ lời giải thích nào. Mọi người sẽ không học bằng cách sao chép/dán mã của bạn. – Coeffect
@Mannimarco Tôi đã cập nhật, anh ấy có thể thử sử dụng thành phần outputraw để thử hiển thị dưới dạng html. Thông tin Fore có thể được tìm thấy trong google hoặc tại tapestry.org – sfrj