1

ここで質問するのは初めてです。

私は J2ME の初心者で、現在は小さなアプリケーションを開発していますが、データをテーブルに表示したいときに問題が発生します。しかし、J2meではテーブルをサポートしていないため、CanvasまたはCustomItemによるテーブルの作成など、別の方法でテーブルを表すことができることを知っています。

Canvas では、次のような 2 本の線を描くことができます。

-----------------------
|
|
|
|

しかし、次のような2行の座標を取得する方法がわかりません:

                         |
                         |
                         | 
                         |
                         |
--------------------------

2つは画面全体に長方形を描き、

drawline メソッドには x1、y1、x2、y2 の 4 つの要素があることを知っています。

しかし、上に2本の線を引くためのx点とy点を計算することはできません

説明するか、例を挙げてください

私のコード:

package test;

import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;

/**
 *
 * @author J2MENewBie
 */
public class TableCanvasExample extends Canvas {
    private int cols=3;
    private int rows =50;
    protected void paint(Graphics g) {
        g.setColor(0x94b2ff);
        g.fillRect(0, 0, this.getWidth(), this.getHeight());
        //draw two lines
        g.setColor(0xf8011e);
        g.drawLine(0, 0, 0, this.getWidth());
        g.drawLine(0, 0, this.getHeight(), 0);

    }

}

package test;

import javax.microedition.lcdui.Display;
import javax.microedition.midlet.*;

/**
 * @author J2ME NewBie
 */
public class TableCanvasMidlet extends MIDlet {
    private TableCanvasExample tbcve;

    public TableCanvasMidlet(){
        tbcve = new TableCanvasExample();
    }
    public void startApp() {
        Display.getDisplay(this).setCurrent(tbcve);
    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
    }
}

P/s: 垂直線がフルサイズになっていません。理由がわかりません。

ありがとうございました!

4

1 に答える 1

0

コード内に同じように見えるゼロが多すぎます - 代わりにわかりやすい名前を使用してみてください:

    int w = getWidth(), h = getHeight(); // I think this way it's easier to read

    int xLeft = 0, yTop = 0; // descriptive names for zeroes
    // below, replace w - 1 -> w and h - 1 -> h if lines drawn are off-by-one
    int xRight = w - 1, yBottom = h - 1; // names for top - right coordinates

    g.drawLine(xLeft, yTop, xLeft, yBottom); // your left vertical
    g.drawLine(xLeft, yTop, xRight, yTop); // your top horizontal

    g.drawLine(xRight, yTop, xRight, yBottom); // add right vertical
    g.drawLine(xLeft, yBottom, xRight, yBottom); // add bottom horizontal

描画された長方形が期待どおりに見えない場合は、上記のコードでセマンティックが間違っている場所を見つけてください

于 2011-09-23T15:59:11.307 に答える