Guten Tag zusammen,
ich versuche gerade zum ersten Mal, eine eigene GUI-Komponente zu basteln - eine Box mit vier Textfeldern drin (TextFieldBox). Da man aber nichts sieht, muss meine paintComponent-Methode falsch sein, obwohl sie derzeit zum Testen nur ein
Rechteck malen soll. Offenbar wird sie gar nicht angesprochen.
Wenn das dann klappt, ist die nächste Frage: Muss ich die vier Textfelder wirklich malen, oder kann ich das nicht über deren paint-Methode machen lassen?
Gruß
Jörg
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class BoxTest extends JFrame
{
public BoxTest()
{
setBounds(400,400,400,300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container cp=getContentPane();
cp.setLayout(null);
JTextField tf1= new JTextField();
JTextField tf2= new JTextField();
tf1.setBounds(30,50,200,20);
tf2.setBounds(30,80,200,20);
TextFieldBox cm= new TextFieldBox(270,50,25);
cp.add(tf1);
cp.add(tf2);
cp.add(cm);
setVisible(true);
}
public static void main(String[] args)
{ new BoxTest();
}
}
class TextFieldBox extends JComponent
{
int x,y,h;
Box tfBox;
private JTextField tf1,tf2,tf3,tf4;
public TextFieldBox(int x, int y, int h)
{
this.x=x;
this.y=y;
this.h=h;
tfBox= Box.createVerticalBox();
tfBox.setBorder (BorderFactory.createLineBorder(Color.GRAY,5));
tf1 = new JTextField(5);
tf2 = new JTextField(5);
tf3 = new JTextField(5);
tf4 = new JTextField(5);
tfBox.add(tf1);
tfBox.add(tf2);
tfBox.add(tf3);
tfBox.add(tf4);
tfBox.setBounds(x,y,52,4*h+10);
}
public void paintComponent(Graphics g)
{ super.paintComponent(g);
Rectangle drawHere = g.getClipBounds();
System.out.println(drawHere);
g.setColor( getForeground() );
g.fillRect(300, 30, 50, 120);
// tfBox.paintComponent(g); // has protected access in javax.swing.JComponent
}
}
geschrieben von
Jörg2
,
29.09.2003, 17:26 Uhr
, 32 mal gelesen