setSize() funktioniert nicht

  • Themenstarter Themenstarter Tech
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
T

Tech

Gast
Code:
public class Kurve extends JPanel {
    
    /** Creates a new instance of Kurve */
    public Kurve() {
        initComponents();
    }
        
    private void initComponents() {
        addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent evt) {
                formMouseClicked(evt);
            }
        });        
        addMouseMotionListener(new MouseMotionAdapter() {
            public void mouseMoved(MouseEvent evt) {
                formMouseMoved(evt);
            }
        });
        setBackground(Color.white);
        setBorder(BorderFactory.createEtchedBorder());
        add(positionLabel);
        ebeneLabel.setText("Ebene: " + ebene);
        add(ebeneLabel);
    }...

Ich hab hier ein JPanel, dass ich in einem JFrame anzeigen lassen will, aber mit einer bestimmten Größe.
Hier ein Aussschnitt:
Code:
 private static Ausgabe a = new Ausgabe();
private static Kurve k = new Kurve();
    
    public static void main(String args[]) {
        try {
            Thread.sleep(3000);
        } catch (InterruptedException ex) {
            ex.printStackTrace();
        }
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() { 
                //k.setSize(a.getWidth() - 300, a.getHeight() - a.ueberschrift.getHeight() - (a.getHeight() - a.jSeparator1.getY()) - 10);
                k.setLocation(5, a.ueberschrift.getHeight() + 5);
                a.add(k);
                a.setVisible(true);
            }
        });
    }
Ich habe den setSize()-Befehl auskommentiert, weil er einfach nicht funktioniert. Auch wenn ich eine bestimmte Größe unter initCompnents() angebe, funktioniert es nicht. Liegtes daran, dass ich die Kurve als static deklariert habe?

Vielleicht kann mir jemand helfen.
 
Solange nicht bekannt ist, welches Layout du in "Ausgabe" benutzt, wirds schwer.

Bis dahin, probiere:

Code:
setPreferredSize(Dimension preferredSize)
statt setSize...
 
und wenn deine components eine ganz bestimmte größe erhalten sollen, setze den LayoutManager des untergrundes, also des parents, auf null. dann solltest du aber die location und die size setzen, entweder getrennt oder per setBounds(...).

wünsche gutes gelingen

wayne
 
Ich habe die ganzen Vorschläge ausprobiert, aber es klappt immer noch nicht.
Als Layout benutze ich nichts bestimmtes, ich habe die Standardeinstellung übernommen und die ist "Freier Entwurf"
 
NetBeans benutzt für den freien Entwurf das GroupLayout.
Damit kann man im NetBeans Design Modus mit der Maus die Grösse und Position frei einstellen.
Das GroupLayout ist für manuelle Einstellungen direkt im Quellcode ungeeignet, weil zu kompliziert.
Für Anfänger ist es erstmal besser, sich mit den gängigen LayoutManagern zu beschäftigen.
Die Java Standardeinstellung ist BorderLayout für JFrame und FlowLayout für JPanel.
Der NetBeans Template Manager erlaubt eine entsprechende Anpassung der IDE.
Am besten benutzt man jedoch anfangs gar keine IDE.
http://java.sun.com/docs/books/tutorial/uiswing/layout/using.html
 
du solltest einfach nur in deiner main()-methode in der dort inline deklarierten run()-methode hinzufügen:
Code:
a.setLayout(null);
eigentlich solltest du dies aber bei der initialisierung von a tun, also in dessen konstruktor oder direkt nach dessen aufruf, vor dem ersten zeichnen.

anschließend werden die werte von k.setLocation(...), k.setSize(...) oder k.setBounds(...) übernommen und deine kurve an entsprechender position mit entsprechender größe gezeichnet.

viel glück

wayne
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben