co zrobić aby utworzony komponent sie narysował ?

0

Stworzyłem sobie nowy komponent blokwarunkowy i utworzyłem jego instancję, po czym dodałem go do utworzonego komponentu Jpanel, aby wyrysował mi obiekt na panelu ... nie wyrysował nic ....czy ktoś może mi pomóc ?


public class BlokDecyzyjny extends Component{

    String warunek;

   public BlokDecyzyjny(String wyrazenie){

       String warunek = wyrazenie;

   }

    @Override

public void paint(Graphics g) {

        g.setColor( Color.blue);
        g.drawRect(0, 0, 80, 30);
        g.drawString(this.warunek, 5 , 20);

    //tutaj kod rysujący cokolwiek na "g"

}



JPanel panel = new JPanel();
BlokDecyzyjny blok = new BlokDecyzyjny(".......");
panel.add(blok); 
0

nie wiem jak to wygląda przy metodzie paint klasy Component. Przy paintComponent(Graphics g) z klasy JFrame należy wywołać nadklasę (mam nadzieję, że dobre określenie) z klasy JFrame, którą dziedziczymy: super.paintComponent(g). Nie dodanie tej linijki objawia się opisanym skutkiem: nic się nie wyświetla. Stąd dochodzę do wniosku, że taka sama sytuacja jest przy paint() z Component:

super.paint(g)

0

nie działa dodanie do metody paint wiersza super.paint(g);

0

Do rysowania służą inne klasy (JPanel, Panel, Canvas). Zmień kod, np. na taki

public class BlokDecyzyjny extends JPanel{
 
    String warunek;
 
   public BlokDecyzyjny(String wyrazenie){
 
       warunek = wyrazenie; //to jest bardzo ważne, słowa String nie może tu być
       setPreferredSize(new Dimension(100,100));
 
   }
 
    @Override
 
public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.setColor( Color.blue);
        g.drawRect(0, 0, 80, 30);
        g.drawString(this.warunek, 5 , 20);
 
    //tutaj kod rysujący cokolwiek na "g"
 
}
 
 
 
JPanel panel = new BlokDecyzyjny(".......");

0

kod wkleiłem, natomiast u mnie nie działa ...
Celem stworzenie obiektów dziedziczących po klasie Components jest zbudowanie obiektów, a tak naprawdę bloków z jakich składa się schemat blokowy.
Dzięki czemu chcę sobie uprościć rysowanie dodając je do komponentu Jpanel metodą add, ustawianie ich na odpowiednich pozycjach w Jpanelu pozwoliło by zbudować na nim Schemat blokowy. Nie wiem czy jest to dobre rozwiązanie ?

I mam jeszcze jedno pytanie, czy to co narysuje na komponencie JPanel da się przekonwertować na jakiś format obrazu (jpg,bmp), a następnie zapisać jako plik ?

0

kod wkleiłem, natomiast u mnie nie działa ...
Gdzie wkleiłeś? Do albumu ze zdjęciami? Panel się sam cudownie nie wyświetli, musisz go umieścić w jakimś oknie i na rzecz okna wywołać setVisible(true).

0

Problem tkwi z pewnością w moim kodzie, ale nie wiem jak go rozwiązać gdyż dopiero zaczynam pisać obiektowo ....
Program pisze w netbeansie, nowo utworzony komponent klasy BlokDecyzyjny tworzę w głównym oknie Interfejsu użytkownika klasie Interfejs.
Nowo utworzony komponent dodaje do Jpanela (jPanel1) znajdującego się w klasie interfejs dziedziczącej po JFrame,

JPanel panel = new BlokDecyzyjny(".......");
jPanel1.add(panel);

jPanel1.setVisible(true); // to na pewno nie o to chodzi gdyż i tak nie działa

chyba masz na myśli w tym momencie główne okno programu, czyli obiekt klasy interfejs gdzie znajduje się jPanel1 do którego dodałem nowo utworzony komponent. Jak to zrobić jeżeli cały kod powyższy zadeklarowany jest w klasie Interfejs w którym nie ma dostępu do instancji tej klasy ?
Instancja jest w głównej klasie Main.

1 użytkowników online, w tym zalogowanych: 0, gości: 1