JScrollePane größe anpassen

Jhue89

Bekanntes Mitglied
Guten Morgen zusammen,

ich hab ein kleines Problem mit meinem JScrollPane.
Ich habe als Grundlayout ein Borderlayout und für den Center Bereich habe ich ein Jpanel mit Flowlayout darin enthalten ist mein JScrollPane.
Da ich den Centerbereich bei ändeung der Fenstergröe anpassen möchte muss ich natürlich auch das JScrollPane anpassen.
ich habe versucht das mit JPanel.getwidth zu lösen aber da bekomme ich nur eine 0 zurück.

Java:
 public MainWindow()
    {
        txtOutputStream.setBorder(null);
        txtOutputStream.setBackground(new Color(240, 240, 240));
        txtOutputStream.setFont(new Font("Tahoma", Font.PLAIN, 8));
        txtOutputStream.setVerifyInputWhenFocusTarget(false);
        txtOutputStream.setText("OUTPUT:");
        txtOutputStream.setSize(new Dimension(500, 20));
        txtOutputStream.setMinimumSize(new Dimension(500, 10));
        txtOutputStream.setPreferredSize(new Dimension(500, 10));
        txtOutputStream.setHorizontalAlignment(SwingConstants.LEFT);
        txtOutputStream.setColumns(180);
        //Einstellungen Mainwindow
        setTitle("Test Programm");
        setSize(1500, 900);
        setLocationRelativeTo(null);
        OutputStream("Programm wurde gestartet");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        //Inizialiesieren der Grafikobjekte
        
        //Panel links Schachtel hinzufügen
        btnSchachtelHinzufügen = new JButton("Schachtel hinzufügen");
        btnSchachtelLaden = new JButton("Datei laden");
        lblSchachtel[0] = new JLabel("Schachtel Teil 1");
        ausgewählteBoxdaten[0] = new Boxdata();       
        
        for (int i = 1; i<=9; i++)
        {
            lblSchachtel[i] = new JLabel("Schachtel Teil " + (i+1));
            cmbSchachtel[i] = new JComboBox<String>();
        }

        cmbSchachtel[0] = new JComboBox<String>();       
        cmbSchachtel[0].addItem("Kein Verzeichnis ausgewählt");
        
        btndelete = new JButton();
        btndelete.setMargin(new Insets(0, 0, 0, 0));
        btndelete.setIcon(new ImageIcon(ErstesProjekt.class.getResource("/res/Images/delet.png")));
        getContentPane().setLayout(new BorderLayout(0, 0));
        
        //Set Elements Panel left
        btnSchachtelLaden.setBounds(10, 21, 400, 36);
        lblSchachtel[0].setBounds(10, 55, 400, 36);
        cmbSchachtel[0].setBounds(10, 83, 400, 36);
        cmbSchachtel[0].setName("0");
        btnSchachtelHinzufügen.setBounds(10, 130, 400, 36);
        btndelete.setBounds(415, 83, 36, 36);       
      
        pnlLeft.setLayout(null);
        pnlLeft.add(btnSchachtelLaden);
        pnlLeft.add(lblSchachtel[0]);
        pnlLeft.add(cmbSchachtel[0]);
        pnlLeft.add(btnSchachtelHinzufügen);
        
        getContentPane().add(pnlLeft, BorderLayout.WEST);
        pnlLeft.setBorder(new TitledBorder(new LineBorder(new Color(0, 0, 0)), "Schachtelauswahl", TitledBorder.LEADING, TitledBorder.BELOW_TOP, null, new Color(0, 0, 0)));
        pnlLeft.setPreferredSize(new Dimension(460, 200));
        pnlLeft.setLocation(new Point(15, 20));
        
        //Panel oben       
        getContentPane().add(pnlTop, BorderLayout.NORTH);
        pnlTop.setBorder(new LineBorder(new Color(0, 0, 0)));       
        FlowLayout flowLayout = (FlowLayout) pnlBottom.getLayout();
        flowLayout.setAlignment(FlowLayout.LEFT);
      
       //Panel unten
        getContentPane().add(pnlBottom, BorderLayout.SOUTH);
        pnlBottom.setBorder(new LineBorder(new Color(0, 0, 0)));   
        
        pnlBottom.add(txtOutputStream);
        
        
        // Panel rechts Preview       
        
        getContentPane().add(pnlRight,BorderLayout.EAST);
        pnlRight.setBorder(new TitledBorder(new EtchedBorder(EtchedBorder.LOWERED, new Color(255, 255, 255), new Color(160, 160, 160)), "Voransicht", TitledBorder.LEADING, TitledBorder.BELOW_TOP, null, Color.BLACK));
        pnlRight.setLocation(new Point(700, 10));
        pnlRight.setPreferredSize(new Dimension(370, 844));
        pnlRight.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
      
        
        lblboxPreviewLbl[0] = new JLabel("Schachtel 1");
        lblboxPreviewLbl[0].setPreferredSize(new Dimension (340,20));   
        
        
        lblboxPreviewPic[0] = new JLabel();
        lblboxPreviewPic[0].setPreferredSize(new Dimension (340,200));
        lblboxPreviewPic[0].setIcon(null);
        scrlpRight.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
        scrlpRight.setAutoscrolls(true);
        scrlpRight.setViewportBorder(new BevelBorder(BevelBorder.LOWERED, null, null, null, null));
        scrlpRight.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
        scrlpRight.setLocation(new Point(20, 5));
        scrlpRight.setPreferredSize(new Dimension(360, 784));
        scrlpRight.getVerticalScrollBar().setUnitIncrement(15);
        pnlPreview.setAlignmentY(Component.TOP_ALIGNMENT);
        pnlPreview.setAlignmentX(Component.LEFT_ALIGNMENT);
        
         pnlRight.add(scrlpRight);
        
        scrlpRight.setViewportView(pnlPreview);
        pnlPreview.setLayout(null);
        lblboxPreviewLbl[0].setBounds(5,5,340,20);
        pnlPreview.add(lblboxPreviewLbl[0]);   
        lblboxPreviewPic[0].setBounds(5,25,340,200);
        pnlPreview.add(lblboxPreviewPic[0]);   
        
      
      
        //Panel Center
        getContentPane().add(pnlCenter,BorderLayout.CENTER);
        pnlCenter.setPreferredSize(new Dimension(400, 800));
        pnlCenter.setBorder(new TitledBorder(new LineBorder(new Color(0, 0, 0), 2), "Schachteleditor", TitledBorder.LEADING, TitledBorder.BELOW_TOP, null, new Color(0, 0, 0)));
        pnlCenter.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
        
        JScrollPane sclpCenter = new JScrollPane();
        sclpCenter.setPreferredSize(new Dimension(pnlCenter.getWidth(), 775));
        sclpCenter.setLocation(new Point(20, 5));
        sclpCenter.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
        sclpCenter.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
        pnlCenter.add(sclpCenter);

Der Teil um den es geht startet ab Zeile 111.

Ist getWidth() nicht richtig? muss ich dafür etwas anderes nehmen?
 
Warum ein FlowLayout? Das ist ja gerade dazu da, dass die Größe der Komponenten nicht angepasst wird.

Nebenbei: getWidth() liefert 0, weil die Größe erst vom LayoutManager bestimmt wird.
Ahm... Gute Frage. ich hatte das einfach mal genommen. Welches Layout wäre den passender? Löst das dann mein Problem?

Mit den Ganzen layouts stehe ich noch ein bisschen auf Kriegsfuss.
 
BorderLayout, beispielsweise - und dort das JScrollPane ins Zentrum setzen, dann wird es in Höhe und Breite angepasst, setzt Du es in den Norden/Süden, dann wird nur die Breite angepasst, analog ändert sich im Osten/Westen nur die Höhe.
 

Neue Themen


Zurück
Oben