当前位置:编程学习 > JAVA >>

可不可以让每条线在画出来的时候就标明了顺序?

用JFrame画线的时候可不可以让每条线在画出来的时候就标明了顺序,就是我画第一条线就会在线那里标明是第一条,如此类推。效果大概像下面

--------------------编程问答-------------------- 不知道可不可以贴代码上去。 --------------------编程问答-------------------- 你都画出线了,在旁边画个字不就完了,坐标你都有,有drawText什么的一个方法,和画线的在一起 --------------------编程问答--------------------

import java.awt.Graphics;
import javax.swing.JFrame;

public class LineTest {

/**
 * @param args
 */
public static void main(String[] args) {
new T();
}

}

class T extends JFrame {
public T() {

setBounds(200, 100, 200, 500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}

@Override
public void paint(Graphics g) {
super.paint(g);
g.drawLine(40, 40, 100, 100);
g.drawString("1", 40, 40);
}
}


--------------------编程问答--------------------

public class Test extends JFrame{
 
    public static void main(String[] args) {
    
     Test test=new Test();
     test.setSize(400, 600);
     for(int i=0;i<4;i++){
     T label=new T(i);
     label.setBounds(50, 150*i, 150, 150);
     test.add(label);
     }
     test.show();
    
    }
 
}
 
class T extends JLabel {
int i;
    public T(int i) {
     this.i=i;
    }
    @Override
    public void paint(Graphics g) {
        super.paint(g);
        g.drawLine(10, 10, 100, 10*i);
        g.drawString(Integer.toString(i), 30, 30);
    }
}

不知道为什么第三条位置错位了。正在找原因
--------------------编程问答-------------------- 很纠结,最终只能这样解决了。。。


public class Test extends JFrame{
 
    public static void main(String[] args) {
    
     Test test=new Test();
     test.setSize(400, 700);
     for(int i=0;i<5;i++){
     T label=new T(i);
     label.setBounds(50, 150*i, 150, 150);
     test.add(label);
     if(i==4){
     label.show(false);
     }
     }
     test.show();
    
    }
 
}
 
class T extends JLabel {
int i;
    public T(int i) {
     this.i=i;
    }
    @Override
    public void paint(Graphics g) {
        super.paint(g);
        g.drawLine(10, 10, 100, 10*i);
        g.drawString(Integer.toString(i), 30, 30);
    }
}
--------------------编程问答-------------------- 要计算字符串的位置,去看看FontMetrics --------------------编程问答--------------------
引用 4 楼 AA5279AA 的回复:

public class Test extends JFrame{
 
    public static void main(String[] args) {
    
     Test test=new Test();
     test.setSize(400, 600);
     for(int i=0;i<4;i++){
     T label=new T(i);
     label.setBounds(50, 150*i, 150, 150);
     test.add(label);
     }
     test.show();
    
    }
 
}
 
class T extends JLabel {
int i;
    public T(int i) {
     this.i=i;
    }
    @Override
    public void paint(Graphics g) {
        super.paint(g);
        g.drawLine(10, 10, 100, 10*i);
        g.drawString(Integer.toString(i), 30, 30);
    }
}

不知道为什么第三条位置错位了。正在找原因


引用 5 楼 AA5279AA 的回复:
很纠结,最终只能这样解决了。。。


public class Test extends JFrame{
 
    public static void main(String[] args) {
    
     Test test=new Test();
     test.setSize(400, 700);
     for(int i=0;i<5;i++){
     T label=new T(i);
     label.setBounds(50, 150*i, 150, 150);
     test.add(label);
     if(i==4){
     label.show(false);
     }
     }
     test.show();
    
    }
 
}
 
class T extends JLabel {
int i;
    public T(int i) {
     this.i=i;
    }
    @Override
    public void paint(Graphics g) {
        super.paint(g);
        g.drawLine(10, 10, 100, 10*i);
        g.drawString(Integer.toString(i), 30, 30);
    }
}

图我是用windows的画图工具画的,是为了表达大概的意思,数字显示在显得任何位置无所谓,谢谢你的回答。 --------------------编程问答--------------------
引用 6 楼 Inhibitory 的回复:
要计算字符串的位置,去看看FontMetrics

谢谢,在看。 --------------------编程问答-------------------- 其实你能画线,在线的起始端drawString就行了 --------------------编程问答--------------------
引用 9 楼 huxiweng 的回复:
其实你能画线,在线的起始端drawString就行了

我试试,其实我只是要一个思路,真正要的功能比这复杂点。 --------------------编程问答-------------------- 我想表达的是,每画一条线,就会有数字出现在上面,就是类似用windows画图工具那样画线,是画线的同时线的顺序同时出现。
补充:Java ,  Java相关
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,