油漆(图形g)方法。awt.标签源类不叫

0

的问题

该课程对于我儿子的学校仍然包括学生的学习Java AWT. 虽然我不认为这是最好的方法,我不能改变它,因为它是由教育部。 无论如何,我尽量帮助我的儿子与他的练习,因为我编程AWT自己很多年前。 但我有一个问题呈现的标签。 我什么实际后是建立一个简单表在AWT,因为表中的缺失。 该方法是采取一个GridLayout和添加标签。 这个工作很好,但我想有的分离行列之间的和行。 因此,我的分类标签和复盖画像这样:

在表I类做

public class Table extends Container {
    ...
    this.setLayout(new GridLayout(rows+1, cols));
    for(int i=0; i<cols; i++) {
        for(int y=0; y< rows; y++) {
            TableLabel label = new TableLabel(rowData[i][y].toString()); 
            add(label);
        }
    }
    ...
}

这指的是

public class TableLabel extends Label {

    public TableLabel(String labelText) {
        super(labelText);
    }

    public void paint​(Graphics g) {
        super.paint(g);
        System.out.println("paint");
        Graphics2D g2 = (Graphics2D)g;
        g2.setPaint(Color.BLUE);
        g2.drawRect(getX(), getY(), getWidth(), getHeight());
    }
    
    public void update​(Graphics g) {
        super.update(g);
        System.out.println("update");
        Graphics2D g2 = (Graphics2D)g;
        g2.setPaint(Color.BLUE);
        g2.drawRect(getX(), getY(), getWidth(), getHeight());
    }
}

呈现并没有改变。 根据调试器既不是油漆也没有更新过的呼吁。 也释放并不是写到控制台。 我是什么丢失? 该应用程序汇编和运行下Java11. 我知道,AWT和11版是一种有线,但是鉴于设置。 谢谢你提前。

awt inheritance java paint
2021-11-23 17:31:33
2
0

以下代码对我的作品。 你可以扩展你的代码,包括一个可重复的问题? 并请说明正的问题是什么,以便我们可以肯定我们都在看同一件事。

public class AwtPaint {
   
   public static void main( String[] args ) {
      SwingUtilities.invokeLater( AwtPaint::init );
   }
   
   private static void init() {
      JFrame frame = new JFrame();
      
      Table myTable = new Table( 3, 3 );
      frame.add( myTable );
      
      frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
      frame.pack();
      frame.setLocationRelativeTo( null );
      frame.setVisible( true );
   }
   
}

class Table extends Container {
    public Table( int rows, int cols ) {
    this.setLayout(new GridLayout(rows+1, cols));
    for(int i=0; i<cols; i++) {
        for(int y=0; y< rows; y++) {
            TableLabel label = new TableLabel( "Col: " + i + ", row: " + y ); 
            add(label);
        }
    }
    }
}
class TableLabel extends Label {

    public TableLabel(String labelText) {
        super(labelText);
    }

    public void paint​(Graphics g) {
        super.paint(g);
        System.out.println("paint");
        Graphics2D g2 = (Graphics2D)g;
        g2.setPaint(Color.BLUE);
        g2.drawRect(getX(), getY(), getWidth(), getHeight());
    }
    
    public void update​(Graphics g) {
        super.update(g);
        System.out.println("update");
        Graphics2D g2 = (Graphics2D)g;
        g2.setPaint(Color.BLUE);
        g2.drawRect(getX(), getY(), getWidth(), getHeight());
    }
}
2021-11-23 17:43:25

总增加 @Override. 也许-我不确定- drawRect(0, 0, .... 呼叫 super.paint 没有必要的。
Joop Eggen
0

谢谢你所有的反馈意见。 我还是不知道什么是实际上是错误的,但当我跟随乔普的建议,并进入"@复盖",日食给我一个错误,他说,我的签名是未知的。 我看不出有差异的文件,但被删除的代码,并建立了方法,这一次使用的复盖功能食。 现在它的工作。 也许不可打印的字的某个地方在线?!

通过这种方式,同时画就是现在所谓的蓝边界仍然不渲染。 我取代了"setPaint"与"setColor"没有成功。 我还想提议设置一个而且vgap,但由于签有相同的背景颜色的容器中的表格,该差距是看不见的。 并设定时的背景容器的标签都改变了,但不是容器。 这是一个问题与容器。 之后我改变了该表不再延伸的容器,但小组,变化的背景,该表不再转发到标签。 现在我可以设置不同的颜色表和标签使用setBackground因为无论我编码在涂料的方法没有效果。 我想有一个原因来摆动;-)

2021-11-23 20:33:31

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................