jComponent Size

lun27

Grünschnabel
Hallo,

hab ma wieder nen kleines Problem und ich weiß nicht womit das zusammen hängt. Ich hab mit Hilfe mehrere Topics aus diesem Forum und mit dem openbook "Java ist doch keine Insel" mich mal selbst an Swing und deren Komponenten versucht, ohne Editoren zum Erstellen zu verwenden. Hab mir eine eigene Komponente mittels JComponent gebastelt, die nur einen langen Strich zeichnet. Diese Komponente soll allerdings kleiner sein wie der eigentliche Frame, aber egal was ich mache, die Komponente passt sich immer der Größe des Frames an. Könnte das mit dem zu langen Strich zusammen hängen oder muss ich unbedingt mit Layouts arbeiten, um die eigentliche Größe der Komponente festzulegen, aber wozu kann man dann mit setSize die Größe der Komponente festlegen? Ok, viele Fragen auf einmal... hier erstmal der Code, mit dem ich das alles getestet habe:

Java:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.BorderFactory;
import javax.swing.JComponent;
import javax.swing.JFrame;

/**
 *
 * @author luni
 */
public class ComponentTest extends JFrame {
    Display display;
    
    public ComponentTest() {
        super("ComponentTest");
        initComponents();
        
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setSize(1000, 600);
        setLocationRelativeTo(null);
        setVisible(true);
    }
    
    private void initComponents() {
        display = new Display();
        display.setSize(500, 500);
        //display.setPreferredSize( new Dimension(500, 500) );
        //display.setLocation(5, 5);
        //display.setMaximumSize( new Dimension(500, 500) );
        System.out.println( display.getBounds() );
        
        display.setBorder( BorderFactory.createLineBorder( new Color(0, 0, 0) ) );
        add(display);
        //pack();
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        new ComponentTest();
    }
    
    /**
     * 
     * ComponentTest Component Class
     */
    static class Display extends JComponent {
        
        @Override
        protected void paintComponent(Graphics graphics) {
            Graphics2D g = (Graphics2D) graphics;
            super.paintComponent(g);
            //g.drawLine(1, 100, getWidth()-2, 90);
            g.drawLine(1, 100, 1000, 90);
        }
    }
}

Gruss
Luni
 
Hallo,

wenn du selbst eine Größe festlegen möchtest, musst du entweder setPreferredSize verwenden, oder das Layout des Frames auf null setzen.

MFG

Sascha
 
Das mit setPreferredSize hatte ich zwar schon ausprobiert und hat auch leider keine Wirkung gezeigt, allerdings das mit dem Layout deaktivieren hat funktioniert. Nun ist die erstellte Komponente so groß wie sie sein soll. Danke für deine Hilfe.
 
Zurück