3 svar
138 visningar
uppsalairaniern 82 – Fd. Medlem
Postad: 1 nov 2017 08:48

Rita en linje JFrame - hur?!

Tjena pluggakutare!

Har fastnat på en del av vår uppgift som vi misslyckas med att förstå hur vi ska gå tillväga för att lösa det och det frustrerar mig riktigt mycket (som med mycket annat som har med att göra när man fastnar i progg...). Nedanstående bild är ex. hur vi tänkt lösa det rödmarkerade (fråga och vår lösning) men det funkar fortfarande inte. Det enda vi får upp är en ruta (400, 400 pixlar stor) som är röd, that's it. Ingen linje som vi vill...

https://imgur.com/a/OK4TK

Vart går det snett i koden? Har googlat runt och det ser ut som kodmässigt är det väldigt likt det de skrivit i vår kurslitteratur och det som finns på google, men fortfarande blir det fel....

Uppskattar stort ifall hjälp kan ges!

Stokastisk 3597 – Fd. Medlem
Postad: 1 nov 2017 09:38

Hinner inte riktigt skriva ett längre inlägg. Men problemet är att ni har skrivit över paintComponent i klassen LAB3_warmup, notera att det aldrig någonsin skapas en instans av den klassen i ert program.

För att lösa problemet kan man göra på flera olika sätt, men ett sätt är att skapa en klass som ärver av JPanel, i denna klass så överlagrar ni paintComponent och sedan i eran LAB3_warmup så ändrar ni så att det är en instans av denna klass ni lägger in som en panel istället för eran "mypanel".

uppsalairaniern 82 – Fd. Medlem
Postad: 1 nov 2017 09:50

Tack för snabbt svar!

Menar du något i den här stilen?

https://imgur.com/a/zDkdL

Lite osäker nu på vad som saknas, för nu har en klass skapats som ärver JPanel (class MyPanel extends JPanel) och sedan överlagrar vi paintComponent, så antar att vi nu i main metoden där skriver in istället för Mypanel....?

Stokastisk 3597 – Fd. Medlem
Postad: 1 nov 2017 17:11

Ja det är sådär jag menar. Men ni skapar aldrig en instans av MyPanel, istället för JPanel mypanel = new JPanel() så bör det stå

MyPanel mypanel = new MyPanel();

Sedan behöver inte LABB3_warmup ärva från JComponent.

En liten småsak är också att ni bör tänka på att använda Color.RED istället för Color.red. Det första är enligt standardkonventionen.

Svara
Close