Hallo allerseits,
Wenn ich im Programm unten selbst eine Zeichenfläche myz bastle und mache:
myz.add(mypan);
mycont.add(myz);
funktioniert es problemlos.
Wenn ich dagegen mache:
mypan.add(myz);
mycont.add(mypan);
funktioniert es nicht, sondern ich muss in der in der Klasse
MyZeichenflaeche _zusätzlich_ noch die Methode
public Dimension getPreferredSize()
implementieren.
1) Warum?
2) Wo steht diese Info?
mfg
Ernst
Wenn ich im Programm unten selbst eine Zeichenfläche myz bastle und mache:
myz.add(mypan);
mycont.add(myz);
funktioniert es problemlos.
Wenn ich dagegen mache:
mypan.add(myz);
mycont.add(mypan);
funktioniert es nicht, sondern ich muss in der in der Klasse
MyZeichenflaeche _zusätzlich_ noch die Methode
public Dimension getPreferredSize()
implementieren.
1) Warum?
2) Wo steht diese Info?
mfg
Ernst
Code:
import javax.swing.*;
import java.awt.*;
public class MainZeichen {
public static void main(String[] args) {
MyFenster myf = new MyFenster();
}
}
class MyFenster extends JFrame{
private JButton myb1, myb2;
private JTextField myt1, myt2;
private JLabel myl1, myl2;
private JPanel mypan;
private Container mycont;
public MyFenster(){
myb1=new JButton("Go");
myb2=new JButton("Ok");
myt1=new JTextField("hier eingeben",30);
myt2=new JTextField("hier eingeben",30);
myl1=new JLabel("Euro-->Dollar");
myl2=new JLabel("Dollar-->Euro");
mypan=new JPanel();
mycont = getContentPane();
MyZeichenflaeche myz = new MyZeichenflaeche ();
Container mycont = getContentPane();
mypan.add(myl1);
mypan.add(myt1);
mypan.add(myb1);
mypan.add(myl2);
mypan.add(myt2);
mypan.add(myb2);
// So funktioniert es nicht:
// mypan.add(myz);
// mycont.add(mypan);
// So funktioniert es:
myz.add(mypan);
mycont.add(myz);
setTitle("Meine Zeichnung");
setLocation(30,60);
setSize(600,400);
setVisible(true);
}
}
class MyZeichenflaeche extends JPanel {
public void paintComponent (Graphics myg){
myg.setColor(Color.blue);
myg.drawString("Meine Zeichnungen" ,255,20);
myg.drawLine(10,20,500,300);
Color myfarbe = new Color(150, 220, 180);
myg.setColor(myfarbe);
myg.drawOval(50,50,50,50);
myg.fillOval(50,50,50,300);
}
/*
public Dimension getPreferredSize(){
return (new Dimension(250,250));
}
*/
}