Utworzono siatkę w moim programie. Poniżej znajduje się kod używany do utworzenia siatki.Tworzenie funkcji rysowania prostokąta (wypełniony czarnym kolorem) w Javie dla siatki
import java.awt.Graphics;
import javax.swing.JComponent;
import javax.swing.JFrame;
class Grid extends JComponent {
public void paint(Graphics g) {
g.drawRect (10, 10, 800, 500);
for (int i = 10; i <= 800; i+= 10)
g.drawLine (i, 10, i, 510);
for (int i = 10; i <= 500; i+= 10)
g.drawLine (10, i, 810, i);
}
}
public class CoreControl {
public static void main(String[] a) {
JFrame window = new JFrame();
window.setSize(840,560);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.getContentPane().add(new Grid());
window.setVisible(true);
}
}
Co chcę zrobić, to utworzyć funkcję, która będzie narysować prostokąt (wypełniony kolorem czarnym) na podstawie współrzędnych, które daję. Zasadniczo chcę wypełnić niektóre komórki siatki czarnym kolorem, a moim pomysłem jest narysowanie czarnych prostokątów na współrzędnych komórki. Jak mogę wykonać tę funkcję?
Próbowałem stworzyć kolejną klasę o nazwie drawRectangle i nazwał ją w głównej funkcji, jak so window.getContentPane(). Add (new drawRectangle()); jednak to nie zadziałało (pojawia się tylko drawRectangle, a nie siatka).
Chcę również móc korzystać z tej funkcji wielokrotnie, aby nadal tworzyć prostokąty.
Jak utworzyć tę funkcję?
Również, jeśli znasz lepszy sposób, w jaki powinienem zorganizować ten program, proszę daj mi znać (jestem nowy w Javie, więc jestem otwarty na wszelkie sugestie).
ten
paintComponent
może brzmieć głupio, ale w/e jestem nowy w Javie. Jak korzystać z Graphics.fillRect (int, int.int, int)? W tej chwili chciałbyś go użyć: funkcja drawRectangle (int x1, int y1, int x2, int y2) {Graphics.fillRect (int, int.int, int)} jest to możliwe? Czy program automatycznie dodaje prostokąt do ramki? –Nr 'fillRect' jest metodą' Graphics', potrzebujesz odniesienia do kontekstu 'Graphics'. Wszelkie malowanie powinno odbywać się w kontekście metody "malowania" (najlepiej "malowania"). W twojej klasie 'Grid' zapewniłbym metodę o nazwie coś w rodzaju' fillGrid (int x, int y) ', która mówi ci, którą komórkę wypełnić. W twojej metodzie 'paintComponent' określiłbym wtedy granice prostokąta tej komórki i wypełnij używając' fillRect' (ps, ja zaktualizowałem odpowiedź;)) – MadProgrammer
OK, więc po prostu przetestuj fillRect Dodałem publiczny void paint (Graphics g , int x, int y) { \t g.fillRect (x, y, 10, 10); } w klasie siatki. Jak korzystać z tej funkcji? –