Učební plán pro mého syna škola stále patří studentům učení Java AWT. I když nemyslím si, že to je nejlepší přístup, nemůžu to změnit, protože to je stanovené Ministerstvem Školství. Každopádně, snažím se pomoci mému synovi s jeho cvičení, jak jsem naprogramován AWT sebe před mnoha lety. Ale mám problém s rendering štítky. Co jsem vlastně po je vytvořit jednoduchou tabulku v AWT, od tabulky chybí. Přístup je, aby se GridLayout a přidat Popisky. To funguje dobře, ale chtěl jsem mít separace linky mezi sloupci a řádky. Proto jsem se sub-klasifikovány Štítku a přepsal malovat jako tak:
V Tabulce I. třídy udělat
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);
}
}
...
}
který se odkazuje na
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());
}
}
Vykreslování nezměnil. Podle debugger ani barvy, ani aktualizace jsou někdy nazývá. Také println není psaní do konzole. Co jsem chybí? Aplikace je sestaven a běží pod Javou 11. Já vím, AWT a verze 11 je docela pevné, ale to je dané nastavení. Děkuji předem.
@Override
. Možná - nejsem si jist -drawRect(0, 0, ...
. Volánísuper.paint
není potřeba.