Ik zal mijn probleem kort uitleggen. Als er meer vragen zijn, roep ze dan maar.
Voor een opdracht voor 'school' moet ik een applicatie schrijven in Java die totaal crossplatform is, dus moet draaien op alle Windows machines, Linux en SUn bakken.
Dat is niet zo'n probleem. De belangrijkste functionaliteit die het moet hebben is dat het functies kan tekenen, evalueren etc. De hele mikmak, omdat zelf te programmeren ben je al snel wat maanden verder. Dus gezocht op het internet en een 'toolset' met parsers voor functies, objecten die functies representeren, tabellen en grafische classes om dingen te tekenen.
Helaas is die code al een jaar of 2 oud en maakt dus gebruik van de oude AWT structuur. Vroeger heb ik hier wel een beetje mee gewerkt, maar dat was via zo'n IDE die alles voor je deed. Nu is het relatief belangrijk dat alles er nogal strak uitziet, en de Swing componenten zijn dat nogal.
Om alle componenten van die library er mooi uit te laten zien heb ik overal waar er AWT componenten werden gebruikt er Jcomponenten van gemaakt. Verder heb (bijna) (nog) niks veranderd eraan. Als bijvoorbeeld iets TextField extende, heb ik er JTextField van gemaakt.
Dat ging redelijk goed, want bijna alles werkte meteen goed (kwa compilen). Al deze custom objecten hebben een speciale event handling, zodat als ze aan elkaar gekoppeld zijn (dat ga dmv. Controllers) dan herevalueren ze hun waardes en dergelijke. Er waren een paar probleempjes, waar de JTextField bv. geen processTextEvent() had, die heb ik veranderd in processEvent().
Nu voor het eigenlijke probleem. Alles wordt niet goed getekend. Voor de Java kenners zal ik ongeveer de opbouw uitleggen.
Ik heb een JFrame daarin als content een JPanel. Die heeft een menu en JTabbedPanel. Ik beschouw nu alleen even de eerste tab (andere tabs ben ik nog niet aangekomen). In de eerste tab zit een JPanel met BorderLayout. Voor elk region, heb ik een andere JPanel die FlowLayout heeft. Tot nu toe heb ik NORTH CENTER en EAST gebruikt. In die afzonderlijke JPanels doe ik dan de objecten die ik wil tonen. Daaronder heb ik nu een JLabel, ExpressionInput (een subClass van JTextField) een Canvas en JButtons. Eigenlijk iets teveel om los op te noemen. Die buttons worden voor mij gegenereerd en zitten weer in een eigen JPanel.
Zo ziet het eruit als ik het opstart:

Als ik tussen 2 tabs schakel komt het canvas pas te voorschijn (niet als ik inzoom ofzo). Als ik over de knoppen ga of op ze klik, dan worden die pas getekend en als ik inzoom met een knop, dan worden pas die textveldjes getekend met de waardes erin. Zo ziet het er goed uit:

Ik gebruik deze components: JavaMath
Weet iemand al na dit gezien te hebben wat ik fout doe? Zo niet, zeg dan even welk gedeelte van de code je wilt zien.
Voor een opdracht voor 'school' moet ik een applicatie schrijven in Java die totaal crossplatform is, dus moet draaien op alle Windows machines, Linux en SUn bakken.
Dat is niet zo'n probleem. De belangrijkste functionaliteit die het moet hebben is dat het functies kan tekenen, evalueren etc. De hele mikmak, omdat zelf te programmeren ben je al snel wat maanden verder. Dus gezocht op het internet en een 'toolset' met parsers voor functies, objecten die functies representeren, tabellen en grafische classes om dingen te tekenen.
Helaas is die code al een jaar of 2 oud en maakt dus gebruik van de oude AWT structuur. Vroeger heb ik hier wel een beetje mee gewerkt, maar dat was via zo'n IDE die alles voor je deed. Nu is het relatief belangrijk dat alles er nogal strak uitziet, en de Swing componenten zijn dat nogal.
Om alle componenten van die library er mooi uit te laten zien heb ik overal waar er AWT componenten werden gebruikt er Jcomponenten van gemaakt. Verder heb (bijna) (nog) niks veranderd eraan. Als bijvoorbeeld iets TextField extende, heb ik er JTextField van gemaakt.
Dat ging redelijk goed, want bijna alles werkte meteen goed (kwa compilen). Al deze custom objecten hebben een speciale event handling, zodat als ze aan elkaar gekoppeld zijn (dat ga dmv. Controllers) dan herevalueren ze hun waardes en dergelijke. Er waren een paar probleempjes, waar de JTextField bv. geen processTextEvent() had, die heb ik veranderd in processEvent().
Nu voor het eigenlijke probleem. Alles wordt niet goed getekend. Voor de Java kenners zal ik ongeveer de opbouw uitleggen.
Ik heb een JFrame daarin als content een JPanel. Die heeft een menu en JTabbedPanel. Ik beschouw nu alleen even de eerste tab (andere tabs ben ik nog niet aangekomen). In de eerste tab zit een JPanel met BorderLayout. Voor elk region, heb ik een andere JPanel die FlowLayout heeft. Tot nu toe heb ik NORTH CENTER en EAST gebruikt. In die afzonderlijke JPanels doe ik dan de objecten die ik wil tonen. Daaronder heb ik nu een JLabel, ExpressionInput (een subClass van JTextField) een Canvas en JButtons. Eigenlijk iets teveel om los op te noemen. Die buttons worden voor mij gegenereerd en zitten weer in een eigen JPanel.
Zo ziet het eruit als ik het opstart:

Als ik tussen 2 tabs schakel komt het canvas pas te voorschijn (niet als ik inzoom ofzo). Als ik over de knoppen ga of op ze klik, dan worden die pas getekend en als ik inzoom met een knop, dan worden pas die textveldjes getekend met de waardes erin. Zo ziet het er goed uit:

Ik gebruik deze components: JavaMath
Weet iemand al na dit gezien te hebben wat ik fout doe? Zo niet, zeg dan even welk gedeelte van de code je wilt zien.
"Beauty is the ultimate defence against complexity." David Gelernter