Učebné osnovy pre môjho syna školy stále obsahuje študenti vzdelávania Java AWT. Aj keď si nemyslím, že to je najlepší prístup, nemôžem to zmeniť, pretože je nastavený Ministerstvom Školstva sr. Každopádne, ja sa snažím pomôcť môj syn s jeho cvičenia, ako som naprogramované AWT sám pred mnohými rokmi. Ale mám problém s vykresľovaním štítky. To, čo som vlastne po je vytvoriť jednoduché tabuľky v AWT, pretože stoly chýbajú. Prístup je vziať GridLayout a pridať Štítky na to. To funguje, ale ja som chcel mať rozchode čiary medzi stĺpcami a riadkami. Preto som sa sub-klasifikovať Štítok a overwrote farby ako tak:
V Tabuľke triedy som to
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);
}
}
...
}
čo sa týka
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());
}
}
Poskytovanie nezmenila. Podľa ladiaci nástroj ani farba, ani update sa niekedy nazýva. Aj println nie je písomne konzoly. Čo mám chýba? Žiadosti je zostavený a beží pod Java 11. Viem, AWT a verzie 11 je druh káblové, ale to je dané nastavenie. Ďakujem vopred.
@Override
. Možno - ja som nie ste si istí, -drawRect(0, 0, ...
. Zavolaťsuper.paint
nie je potrebné.