2012-12-11 72 views
11

我正在使用libgdx遊戲框架繪製表格。一切都完美呈現,我試圖實現。我現在需要的是顯示錶格的單元格邊界,但目前爲止我沒有發現任何關於此的信息。我也傾向於使用調試邊框線來滿足目的,但也不能改變它們的顏色。在libgdx中繪製表格邊框0.9.7

這是我的代碼。

Table table = new Table(); 
table.setFillParent(true); 
table.left().top(); 

table.add(new Label("Results", new LabelStyle(font, Color.BLACK))).colspan(2).expandX(); 
table.row(); 
table.add(new Label(text_you_score, new LabelStyle(font, Color.BLACK))); 
table.add(new Label(text_actual_score, new LabelStyle(font, Color.BLACK))); 
return table; 

有許多屬性可用於表格和單元格,但不是邊界屬性。 我們也可以手動繪製網格線,但是對於我認爲的每個設備分辨率都無法完美運行。任何幫助或想法是高度讚賞。由於

回答

6
  1. 註冊您的表調試模式

    table.debug();

  2. 呼叫在render()方法

    Table.drawDebug(stage);

Example

0

我通過將ShapeRenderertable.drawDebug(shapeRenderer shapes)調用(我無法工作)轉換爲使用stage並將表添加爲演員來實現調試行的顯示。

在上面的答案中鏈接example確實顯示它清楚,但這裏是一個簡短的片段供參考。這是在libGDX 1.5.3上。

public class MyGdxGame extends ApplicationAdapter { 

    Texture img; 
    Stage stage; 

    @Override 
    public void create() { 
     img = new Texture("badlogic.jpg"); 
     stage = new Stage(); 
     final Skin skin = new Skin(); 

     Label.LabelStyle style = new Label.LabelStyle(new BitmapFont(),Color.WHITE); 
     TextField.TextFieldStyle textFieldStyle = new TextField.TextFieldStyle(); 
     textFieldStyle.fontColor = Color.WHITE; 
     textFieldStyle.font = new BitmapFont(); 

     skin.add("default", style); 
     skin.add("default", textFieldStyle); 
     // Keep your code clean by creating widgets separate from layout. 
     Label nameLabel = new Label("Name:", skin); 
     TextField nameText = new TextField("",skin); 
     Label addressLabel = new Label("Address:", skin); 
     TextField addressText = new TextField("",skin); 

     Table table = new Table(); 
     table.add(nameLabel);    // Row 0, column 0. 
     table.add(nameText).width(100); // Row 0, column 1. 
     table.row();      // Move to next row. 
     table.add(addressLabel);   // Row 1, column 0. 
     table.add(addressText).width(100); // Row 1, column 1. 

     table.setOriginX(0); 
     table.setOriginY(0); 
     table.setX(200); 
     table.setY(200); 
     table.debug(); 

     stage.addActor(table); 
    } 

    @Override 
    public void render() { 
     Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 
     stage.act(Gdx.graphics.getDeltaTime()); 
     stage.draw(); 
    } 

    public void resize (int width, int height) { 
     stage.getViewport().update(width, height, true); 
    } 

    public void dispose() { 
     stage.dispose(); 
    } 
} 
3

這是基於libGDX 1.5.3:

對此的解決方案是使用NinePatch爲您Table背景圖像。

NinePatch patch = new NinePatch(new Texture(Gdx.files.internal("background.png")), 
    3, 3, 3, 3); 
NinePatchDrawable background = new NinePatchDrawable(patch); 

Table table = new Table(); 
table.setBackground(background); 

使用數字變量,您可以修改邊界半徑。確保這與png文件匹配。