[Java] Jpanel teken probleempje

Pagina: 1
Acties:

  • webloem
  • Registratie: Oktober 2002
  • Laatst online: 16-05 08:54
Waarschijnlijk een noobvraag, maar toch:

De bedoeling is een JApplet met daarin een JPanel, en een object van een klasse die JPanel extends. Die klasse heb ik zelf geschreven, en bevat niet veel meer dan de methode paint waaring een 3tal lijnen getekend wordt. Het andere JPanel bevat een aantal controls als een textfield en een combobox. Het probleem is alleen hoe nu ervoor te zorgen dat de de drie lijnen weergegeven worden.

Simpel gezegd ziet het er zo uit:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import java.awt.*;
import java.applet.*;
import javax.swing.*;


public class Mso extends JApplet {
    
chartBase canvas;
JPanel edit;

JTextField t, t2;
JComboBox combo;



    public void init(){

    canvas = new chartBase();
    edit = new JPanel();
    t = new JTextField(20);
    t2 = new JTextField(20);
    combo = new JComboBox();
    
    Container c = this.getContentPane();

    c.setLayout(new BorderLayout());
    edit.setLayout(new BorderLayout());

    edit.add(combo, BorderLayout.CENTER);
    edit.add(t, BorderLayout.SOUTH);
    
    c.add(canvas, BorderLayout.NORTH);
    c.add(edit, BorderLayout.SOUTH);
        
    }   
}


en chartBase ziet er zo uit:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.awt.*;
import java.util.*;
import javax.swing.*;

public class chartBase extends JPanel {
    
    chartBase(){
        
    }
    
    
    public void paintComponent(Graphics g) 
    {
        g.setColor(Color.RED);
        g.drawLine(10,10,100,100);
        g.drawLine(10,100,100,100);
        g.drawLine(100,10,100,100);
    }
}


Ik krijg alleen een deel van de lijnen als ik ook een textfield aan canvas add.

  • Silver7
  • Registratie: Januari 2002
  • Laatst online: 14-05 21:13
Ik leer nu beetje op school Java.

dus mjin waarschijnlijkie oplossing:

import java.applet.*;

Is dat nodig of niet?

Het was proberen waard.

[ Voor 10% gewijzigd door Silver7 op 25-11-2004 22:32 . Reden: niet geschoten is altijd mis! ]


  • webloem
  • Registratie: Oktober 2002
  • Laatst online: 16-05 08:54
Silver7 schreef op donderdag 25 november 2004 @ 22:26:
Ik leer nu beetje op school Java.

dus mjin waarschijnlijkie oplossing:

import java.applet.*;

Is dat nodig of niet?
nee, is dus idd niet nodig. Maar dat maakt verder niet zoveel uit.

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
in je chartBase's paintComponent() method moet je super.paintComponent(g) als eerste aanroepen.
(anders zal het JPanel deel zichzelf niet tekenen omdat je die override)

[ Voor 31% gewijzigd door Glimi op 25-11-2004 22:36 ]


  • JnX
  • Registratie: Februari 2001
  • Laatst online: 18-01 22:08

JnX

In je chartBase klasse moet je volgens mij in je default constructor repaint() aanroepen.

  • webloem
  • Registratie: Oktober 2002
  • Laatst online: 16-05 08:54
Glimi schreef op donderdag 25 november 2004 @ 22:31:
in je chartBase's paintComponent() method moet je super.paintComponent(g) als eerste aanroepen.
Gedaan lost iets op, ik zie iig een klein randje van het canvas.

Edit: Je hebt gelijk, als ik daarna de BorderLayour.NORTH wijzig in BorderLayout.CENTER, dan werk alles perfect.

Mijn dank is groot, mijn schaamte dat ik dit zelf niet kon verzinnen nog groter ;)
Pagina: 1