JPanel scrollable machen

plammy

Bekanntes Mitglied
Hallo :)

Ich will mein JPanel (editPanel) mit Scrollbalken versehen... Im moment kann ich dadrin große rechtecke zeichnen, aber ich sehe den Teil der außehalb von dem JPanel ist natürlich nicht...Ich hab so versucht , aber ich sehe kein Effekt :(

Java:
public class CreateFile extends JPanel implements ActionListener
{

     
    EditPanel editPanel = new EditPanel();
    static CreateFile cf = new CreateFile();
    
    
    int v=ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS;
    int h=ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS; 
     
    JScrollPane jsp=new JScrollPane(editPanel,v,h);
    
    public CreateFile()
    {
        initComponents();      
    }
    
    public void initComponents() 
    {

        /* ****************** Initialisierung *************************  */
        
        //Panels
        websitePanel = new JPanel();    
        layoutPanel = new JPanel();
        fixFormsPanel = new JPanel(); 
        individualFormsPanel = new JPanel();
............
 GroupLayout layoutPanelLayout = new GroupLayout(layoutPanel);
       layoutPanel.setLayout(layoutPanelLayout);
        layoutPanelLayout.setHorizontalGroup(
          
..................
Border tb_edit = BorderFactory.createEtchedBorder(1, lightGrayPanel,darkGrayPanel);       
        editPanel.setBorder(tb_edit);
        
        GroupLayout editPanelLayout = new GroupLayout(editPanel);
        editPanel.setLayout(editPanelLayout);
        editPanelLayout.setHorizontalGroup(
            editPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGap(0, 571, Short.MAX_VALUE)
        );
        editPanelLayout.setVerticalGroup(
            editPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGap(0, 0, Short.MAX_VALUE)
        );
....................
 GroupLayout layout = new GroupLayout(this);
        this.setLayout(layout);
        this.setBackground(darkGrayPanel);
        layout.setHorizontalGroup(
            layout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
              
                .addComponent(editPanel, GroupLayout.DEFAULT_SIZE,GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING, false)
                    .addComponent(websitePanel, GroupLayout.DEFAULT_SIZE, 0, Short.MAX_VALUE)
                    .addComponent(layoutPanel, GroupLayout.DEFAULT_SIZE, 0, Short.MAX_VALUE)
                    .addComponent(fixFormsPanel, GroupLayout.DEFAULT_SIZE, 0, Short.MAX_VALUE)
                    .addComponent(individualFormsPanel, GroupLayout.DEFAULT_SIZE,0, Short.MAX_VALUE))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(20 , 20, 20)
                .addComponent(websitePanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(layoutPanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(fixFormsPanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(individualFormsPanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
                
            .addComponent(editPanel, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                
                
        );
        
    }
  
  
...........
}
 

plammy

Bekanntes Mitglied
jetzt klappt das mit dem scrollbalken aber es wird iwie im hintergrund gezeichnet ... quasi ist mein scrollpane im vordergrund :shock:


Java:
public class CreateFile extends JPanel implements ActionListener, KeyListener
{
 static CreateFile cf = new CreateFile();
   
    public CreateFile()
    {
        initComponents();     
 
    }
    

    public void initComponents() 
    {
 //Panels
        editPanel = new EditPanel();
        jscrollpane=new JScrollPane();
        websitePanel = new JPanel();    
        layoutPanel = new JPanel();
        fixFormsPanel = new JPanel(); 
        individualFormsPanel = new JPanel();


..................

        editPanel.setBackground(lightGrayPanel);
       
        Border tb_edit = BorderFactory.createEtchedBorder(1, lightGrayPanel,darkGrayPanel);       
        editPanel.setBorder(tb_edit);

    
        GroupLayout editPanelLayout = new GroupLayout(editPanel);
        editPanel.setLayout(editPanelLayout);
        editPanelLayout.setHorizontalGroup(
            editPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addComponent(jscrollpane, GroupLayout.DEFAULT_SIZE, 968, Short.MAX_VALUE)
          
        );
        editPanelLayout.setVerticalGroup(
            editPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addComponent(jscrollpane, GroupLayout.DEFAULT_SIZE, 628, Short.MAX_VALUE)
            
        );

 GroupLayout layout = new GroupLayout(this);
        this.setLayout(layout);
        this.setBackground(darkGrayPanel);
        layout.setHorizontalGroup(
            layout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
              
                .addComponent(editPanel, GroupLayout.DEFAULT_SIZE,GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING, false)
                    .addComponent(websitePanel, GroupLayout.DEFAULT_SIZE, 0, Short.MAX_VALUE)
                    .addComponent(layoutPanel, GroupLayout.DEFAULT_SIZE, 0, Short.MAX_VALUE)
                    .addComponent(fixFormsPanel, GroupLayout.DEFAULT_SIZE, 0, Short.MAX_VALUE)
                    .addComponent(individualFormsPanel, GroupLayout.DEFAULT_SIZE,0, Short.MAX_VALUE))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(20 , 20, 20)
                .addComponent(websitePanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(layoutPanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(fixFormsPanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(individualFormsPanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
                
            .addComponent(editPanel, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                
                
        );
        
    }

 @Override
    public void actionPerformed(ActionEvent object) 
    {
if (object.getSource() == buttonCreateLayout)
        {   
            cf.headerW = Integer.parseInt(headerWidth.getText());
            cf.headerH = Integer.parseInt(headerHeight.getText());
            cf.contentW = Integer.parseInt(contentWidth.getText());
            cf.contentH = Integer.parseInt(contentHeight.getText());
            cf.footerW = Integer.parseInt(footerWidth.getText());
            cf.footerH = Integer.parseInt(footerHeight.getText()); 

            repaint();
        } 

 // Variablen deklarieren
     JScrollPane jscrollpane;
     EditPanel editPanel;
     JPanel websitePanel;
     JPanel layoutPanel;
     JPanel fixFormsPanel; 
     JPanel individualFormsPanel;
}
 

Kevin94

Top Contributor
Was ist jetzt das Problem? Ich verstehs nicht. Wenn du eine ScrollPane hast, dann ist die logischerweise vor dem Inhalt, sonst würde der Inhalt ja über die Balken zeichnen. Wenn das die Frage nicht klärt poste mal den Code von EditPanel und ggf. Bilder.
 

plammy

Bekanntes Mitglied
Ich hab mit Absicht überall addGap() eingestellt und man sieht dass in den ganz obere Ecke und ganz untere Ecke dass es tatsächlich gezeichnet wird aber überdeckt wird.. (sind verschiedene Rechtecken)

Java:
public class EditPanel extends JPanel 
{
    
    Image img;
    private int xPos, yPos;
    boolean pressOut = false;
 
    Color grayRect = new Color(230,227,224);
    Color orangeRect = new Color(211,111,53);
    
    Rectangle bausteinRect = new Rectangle(0, 0, 70, 70);

    public  EditPanel()
    {
        /* ********************* Mouse Listener ***************************  */
        addMouseListener(new MouseAdapter() 
        {
           
            public void mousePressed(MouseEvent e) 
            {  
                xPos = bausteinRect.x - e.getX();
                yPos = bausteinRect.y - e.getY();
                
                if (bausteinRect.contains(e.getX(), e.getY()))
                {
                    updateLocation(e);
                    System.out.println("im Baustein");
                }
                else 
                {
                    pressOut = true;
                    System.out.println("auserhalb");
                }  
            }
            
            public void mouseReleased(MouseEvent e) 
            {
                  if (bausteinRect.contains(e.getX(), e.getY()))
                  {
                       updateLocation(e);
                       System.out.println("mouseReleased"); 
                  }
                  else
                  {
                      pressOut = false;
                  }
            }
            
        });

     
        /* ****************** Mouse Motion Listener ***********************  */
        addMouseMotionListener(new MouseMotionAdapter() 
        {
       
            public void mouseDragged(MouseEvent e) 
            {
              if (!pressOut)
              {
                updateLocation(e);
              
              }
              else
              {
                  
              }
           }
        });
        
   
    }

    public void updateLocation(MouseEvent e) 
    {
        bausteinRect.setLocation(xPos + e.getX(), yPos + e.getY());
        System.out.println("update");
        repaint();
  }

    protected void paintComponent(Graphics g) 
    {
        super.paintComponent(g);
   
            int centerX = getWidth()/2;     
            int beginPosition = (getHeight()-(CreateFile.cf.headerH + CreateFile.cf.contentH+ CreateFile.cf.footerH+CreateFile.cf.tile1H+CreateFile.cf.tile3H))/2;

            
            //header
            Rectangle headerRect = new Rectangle(centerX-CreateFile.cf.headerW/2,beginPosition,CreateFile.cf.headerW,CreateFile.cf.headerH);      
            g.setColor(grayRect);
            headerRect.translate(-CreateFile.cf.tile2W/2,CreateFile.cf.tile1H);
            g.fill3DRect(headerRect.x, headerRect.y, headerRect.width, headerRect.height,true);
            
//            MediaTracker mt = new MediaTracker(this);
//            img = Toolkit.getDefaultToolkit().getImage("C:\\Images\\szlogo.jpg");
//            mt.addImage(img,0);
//
//            g.drawImage(img,centerX-CreateFile.cf.headerW/2,beginPosition,this);
   
            //content
            Rectangle contentRect = new Rectangle(centerX-CreateFile.cf.contentW/2,beginPosition + CreateFile.cf.headerH,CreateFile.cf.contentW,CreateFile.cf.contentH);
            g.setColor(grayRect);
            contentRect.translate(-CreateFile.cf.tile2W/2,CreateFile.cf.tile1H);   
            g.fill3DRect(contentRect.x, contentRect.y, contentRect.width, contentRect.height,true);


            //footer
            Rectangle footerRect = new Rectangle(centerX-CreateFile.cf.footerW/2,beginPosition+CreateFile.cf.headerH+CreateFile.cf.contentH,CreateFile.cf.footerW,CreateFile.cf.footerH);
            g.setColor(grayRect);
            footerRect.translate(-CreateFile.cf.tile2W/2,CreateFile.cf.tile1H+CreateFile.cf.tile3H);   
            g.fill3DRect(footerRect.x, footerRect.y, footerRect.width, footerRect.height,true);


            //tile 1
            Rectangle tile1Rect = new Rectangle(centerX-CreateFile.cf.headerW/2-CreateFile.cf.tile2W/2,beginPosition,CreateFile.cf.tile1W,CreateFile.cf.tile1H);
            g.setColor(orangeRect);  
            g.fill3DRect(tile1Rect.x, tile1Rect.y, tile1Rect.width, tile1Rect.height,true);


            //tile 2    
            Rectangle tile2Rect = new Rectangle(centerX+CreateFile.cf.headerW/2-CreateFile.cf.tile2W/2,beginPosition+CreateFile.cf.tile1H,CreateFile.cf.tile2W,CreateFile.cf.tile2H);
            g.setColor(orangeRect);  
            g.fill3DRect(tile2Rect.x, tile2Rect.y, tile2Rect.width, tile2Rect.height,true);


            //tile3      
            contentRect.translate(0,CreateFile.cf.tile3H);
            Rectangle tile3Rect = new Rectangle(centerX-CreateFile.cf.headerW/2-CreateFile.cf.tile2W/2,beginPosition+CreateFile.cf.tile1H+CreateFile.cf.headerH+CreateFile.cf.contentH,CreateFile.cf.tile3W,CreateFile.cf.tile3H);
            g.setColor(orangeRect);  
            g.fill3DRect(tile3Rect.x, tile3Rect.y, tile3Rect.width, tile3Rect.height,true);


            //baustein
     
            bausteinRect = new Rectangle(getX(), getY(),CreateFile.cf.bausteinW,CreateFile.cf.bausteinH);
            g.setColor(orangeRect);  
            g.fill3DRect(bausteinRect.x, bausteinRect.y, bausteinRect.width, bausteinRect.height,true);        
       
            
    }

    
}
 

Anhänge

  • image.jpg
    image.jpg
    32,4 KB · Aufrufe: 37
S

SlaterB

Gast
ich finde auf dem Bild ist nichts zu entdecken, was ist das Problem?
soll der obere minimale Rand durchgängig weiß oder dunkel sein?
womit setzt du das in Verbindung, mit irgendeinem gezeichneren Rechteck?
inwiefern?

Details Details,
in keinem Posting in diesem Thread hast du bisher mehr als zwei Zeilen geschreiben..
wie wäre es mal mit 20 Zeilen?
 

bERt0r

Top Contributor
Ich bin mit nicht sicher ob das das Problem ist, ich klär dich nur mal über eine Tatsache auf:
Wenn du in einem Frame 2 Panels nebeneinander hast und in denen die paintComponent überschreibst a la
Java:
@Override paintComponent(Graphics g)
{
g.drawRect(10,10,100,100);
}

Dann gehen diese Koordinatenangaben nicht von links oben am Bildschirm, auch nicht von links oben am Frame sondern immer von links Oben des jeweiligen Panels aus. Es werden dir also 2 Panels gezeichnet und auf jedem Panel ist ein Rechteck.
 

plammy

Bekanntes Mitglied
Es werden dir also 2 Panels gezeichnet und auf jedem Panel ist ein Rechteck.

ja eben nicht.. Die weiße linien ganz oben und ganz unten sind eigentlich gezeichente rechtecke die im vordergrund sein sollen .. defacto sind die aber drunter..also unter diesen scrollpane anscheinend... man sieht die nicht.. das ist das prblem.. die sollen NICHT im Hintergrund sein sondern vorne auf dem panel
 

plammy

Bekanntes Mitglied
richtig wäre :


Java:
 GroupLayout editPanelLayout = new GroupLayout(editPanel);
        editPanel.setLayout(editPanelLayout);
        editPanelLayout.setHorizontalGroup(
            editPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)          
            .addGap(2,2,2)
          
        );
        editPanelLayout.setVerticalGroup(
            editPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)           
            .addGap(2,2,2)
        );
scrollpane.setViewportView(editPanel);
         
        GroupLayout layout = new GroupLayout(this);
        this.setLayout(layout);
        this.setBackground(darkGrayPanel);
        layout.setHorizontalGroup(
            layout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
              
                .addComponent(scrollpane, GroupLayout.DEFAULT_SIZE,GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING, false)
                    .addComponent(websitePanel, GroupLayout.DEFAULT_SIZE, 0, Short.MAX_VALUE)
                    .addComponent(layoutPanel, GroupLayout.DEFAULT_SIZE, 0, Short.MAX_VALUE)
                    .addComponent(fixFormsPanel, GroupLayout.DEFAULT_SIZE, 0, Short.MAX_VALUE)
                    .addComponent(individualFormsPanel, GroupLayout.DEFAULT_SIZE,0, Short.MAX_VALUE))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(20 , 20, 20)
                .addComponent(websitePanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(layoutPanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(fixFormsPanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(individualFormsPanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
                
            .addComponent(scrollpane, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                
                
        );
 

plammy

Bekanntes Mitglied
jetzt habe ich aber das Problem dass ich PreferredSize angeben muss, damit das mit der Scrollbalken funktioniert... wenn ich das aber für editPanel machewird der schon bei starten des Programm (bzw bei erstellen schon so groß)..das führt dazu das wenn ich meine rechtecke darauf zeichne (und die sind immer zentriert auf dem editPanel) ich immer hin und her scrollen muss damit ich die sehe... ich will das das Programm selber die größe des editPanel errechnet jenachdem wie groß meine rechtecke sind damit das nicht passiert....

(siehe bild)


Java:
public class CreateFile extends JPanel implements ActionListener
{

    static CreateFile cf = new CreateFile();
   
    public CreateFile()
    {
        initComponents();     
      
    }
    

    public void initComponents() 
    {

        /* ****************** Initialisierung *************************  */

        //Panels
        tabbedPane = new JTabbedPane();
        
        editPanel = new EditPanel();
        editPanel.setPreferredSize(new Dimension(1000,1000));
       
        
        scrollPane=new JScrollPane(editPanel);
        editPanel. setAutoscrolls(true);
        scrollPane.setPreferredSize(new Dimension(600,600));
         
        ..................


  GroupLayout editPanelLayout = new GroupLayout(editPanel);
        editPanel.setLayout(editPanelLayout);
        editPanelLayout.setHorizontalGroup(
            editPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)          
            .addGap(2,2,2)
          
        );
        editPanelLayout.setVerticalGroup(
            editPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)           
            .addGap(2,2,2)
        );

        scrollPane.setViewportView(editPanel);
        tabbedPane.addTab("neu", scrollPane);
        
        GroupLayout layout = new GroupLayout(this);
        this.setLayout(layout);
        this.setBackground(darkGrayPanel);
        layout.setHorizontalGroup(
            layout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
              
                .addComponent(tabbedPane, GroupLayout.DEFAULT_SIZE,GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING, false)
                    .addComponent(websitePanel, GroupLayout.DEFAULT_SIZE, 0, Short.MAX_VALUE)
                    .addComponent(layoutPanel, GroupLayout.DEFAULT_SIZE, 0, Short.MAX_VALUE)
                    .addComponent(fixFormsPanel, GroupLayout.DEFAULT_SIZE, 0, Short.MAX_VALUE)
                    .addComponent(individualFormsPanel, GroupLayout.DEFAULT_SIZE,0, Short.MAX_VALUE))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(20 , 20, 20)
                .addComponent(websitePanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(layoutPanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(fixFormsPanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(individualFormsPanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
                
            .addComponent(tabbedPane, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                
                
        );
       
    }
 

Anhänge

  • 1.jpg
    1.jpg
    38,7 KB · Aufrufe: 26
  • 2.jpg
    2.jpg
    40,6 KB · Aufrufe: 23
Zuletzt bearbeitet:

Kevin94

Top Contributor
und wo ist da das Problem? Entweder du überschreibst getPreferredSize() oder du setzt sie bei jeder Datenänderung neu, bevor du repaint() aufrufst.
 

Kevin94

Top Contributor
Was verstehst du an der Aussage nicht? Du willst nicht, dass das Panel am Anfang so rießig ist und dass sich die PreferredSize ändert wenn du mehr Platz brauchst, also musst in deinem Code entweder vor dem neu zeichnen die PreferredSize von EditPanel neu bererechnen oder die Methode in EditPanel überschreiben, und sie darin dynamisch berechnen, was die sauberer Lösung wäre.
 

Kevin94

Top Contributor
Nein das gibt es nicht. Und wenn es das gäbe würde es wahrscheinlich immer 0|0 zurückgeben. Was du mit keine festen Vorgaben machen meinst verstehe ich nicht, die PreferredSize ist eine feste Zahl, die ist nicht mal nach Lust und Laune 500 und weil sie keinen Bock mehr hat dann nur noch 100? Als Programmierer wirst du festlegen müssen wie groß die PreferredSize sein soll und wenn dir die alte nicht mehr passt musst du sie halt änderen und die ScrollPane neu zeichnen.
 

plammy

Bekanntes Mitglied
jaaa... ... ich weiß aber nicht wie das gehen soll.. ich will quasi so was

Java:
public class CreateFile extends JPanel implements ActionListener
{
    
    static CreateFile cf = new CreateFile();
   
    public CreateFile()
    {
        initComponents();     
    
    }
    

    public void initComponents() 
    {

        /* ****************** Initialisierung *************************  */

        /* 
         * dimH muss vllt erstmal standartmäßig auf 600 gesetzt werden und nach Eingabe
         * der headerH, contentH u.s.w. muss sich das vergößern wenn nötig 
         */
        int dimH = CreateFile.cf.headerH+CreateFile.cf.contentH+CreateFile.cf.footerH+CreateFile.cf.tile1H+CreateFile.cf.tile3H+300;
        /* 
         * dimW muss vllt erstmal standartmäßig auf 600 gesetzt werden und nach Eingabe
         * der headerW  u.s.w. muss sich das vergößern wenn nötig 
         */
        int dimW = CreateFile.cf.headerW+CreateFile.cf.tile2W+300;
       
        tabbedPane = new JTabbedPane();
        
        editPanel = new EditPanel();
        editPanel.setPreferredSize(new Dimension(dimH,dimW));
       
        
        scrollPane=new JScrollPane(editPanel);
        editPanel.setAutoscrolls(true);
        scrollPane.setPreferredSize(new Dimension(600,600));

Das Problem ist dass diese Eingaben erst später erfolgen ... Ich hab versucht in der Klassse CreateFile erstmal feste Vorgaben zu machen und das was jetzt oben in dem Code steht in EditPanl erst zu definieren, aber es klappt auch nicht.. der greift immer nur auf die feste Vorgaben
 

Kevin94

Top Contributor
Wie gesagt, wenn sich was ändert must du die Werte neuberechnen, neusetzten und dann neuzeichnen.

[OT]Oder du sparst dir diesese ganze Scheise mit eigenen Swing-Klassen und baust dir ein Applet, dass über JavaScript dem Browser das Rendering deiner HTML Seite überlässt und nur mit ner zusammengeklickten GUI zur Bedienung.[/OT]
 

bERt0r

Top Contributor
Was ich auch nicht verstehe ist, warum du deinem editPanel ein Layout verpasst, aber im nur 2 Gaps draufpackst. Das ganze Programm macht für mich den Eindruck als hättest du dir zu viel vorgenommen. Es wäre wohl besser, du würdest erstmal ein paar einfachere Guis basteln.
Vor allem versteh ich nicht warum du immer deine ganze Applikation hier postest (und wahrscheinlich auch testest. Trenn deinen Code sinnvoll auf - bei deiner Gui gibts doch eindeutig eine rechte und eine Linke Seite, die ziemlich offensichtlich unterschiedliche Aufgaben haben. Das heißt, daraus machen wir 2 Komponenten, also zwei Klassen und die können wir separat testen.
Übrigens: Wenn du ein paar tage an einem Problem hängst, hilft es in der Regel nichts immer wieder daran herumzuschrauben. Mach ein KSKB, von Grund auf. Versuche mit so wenig Code wie möglich dein Problem zu rekonstruieren. Das perfide ist dann manchmal: Wenn man versucht einen Fehler zu erzeugen, tritt keiner auf :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Zwei JPanel übereianderlegen AWT, Swing, JavaFX & SWT 14
XWing Basic JPanel mit 2 Buttons beutzen. AWT, Swing, JavaFX & SWT 10
G JPanel per Drag and Drop JButtons und Bilder ablegen AWT, Swing, JavaFX & SWT 1
G JPanel mit JButtons und Bilder AWT, Swing, JavaFX & SWT 5
N AWT JPanel zu Jframe hinzufügen AWT, Swing, JavaFX & SWT 2
M clear JPanel before repainting AWT, Swing, JavaFX & SWT 1
B ImageIcon auf JPanel austauschen AWT, Swing, JavaFX & SWT 3
T Swing Reload JPanel + darin liegende ProgressBar AWT, Swing, JavaFX & SWT 9
P Swing Mehrere JLabels mit ImageIcon in JPanel lesen AWT, Swing, JavaFX & SWT 1
E JScrollPane mit JPanel verbinden AWT, Swing, JavaFX & SWT 1
F JPanel Celleditor AWT, Swing, JavaFX & SWT 8
B JPanel-Inhalte inkl. JTextarea zoomen? AWT, Swing, JavaFX & SWT 3
B Mit ContentPane werden Komponenten angezeigt, mit SplitPane, JPanel nicht? AWT, Swing, JavaFX & SWT 6
CptK Funktionsgraphen effizient zeichnen und nur Teile von JPanel erneuern AWT, Swing, JavaFX & SWT 2
P Button simpler random auf einem JPanel verteilen? AWT, Swing, JavaFX & SWT 3
O Swing "Eigenes" JPanel wird dem JScrollPane nicht hinzugefügt AWT, Swing, JavaFX & SWT 5
Ich lerne Java. Swing Von JPanel A auf JPanel B zugreifen. AWT, Swing, JavaFX & SWT 4
A JPanel austauschen und Focus geben AWT, Swing, JavaFX & SWT 3
E Auf JPanel malen und davor JComponenten anzeigen AWT, Swing, JavaFX & SWT 12
L JComponent aus JPanel anhand Mausposition ermitteln AWT, Swing, JavaFX & SWT 10
J JPanel wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
B Verschiebbares JPanel "ruckelt" im Randbereich AWT, Swing, JavaFX & SWT 2
S Swing JPanel nimmt keinen KeyListener an AWT, Swing, JavaFX & SWT 7
K JLabel mit Bilder im nicht initialisierten JPanel hinzufügen AWT, Swing, JavaFX & SWT 5
Hatsi09 Swing JPanel Bild einfügen AWT, Swing, JavaFX & SWT 14
L JPanel zeigt keinen Inhalt AWT, Swing, JavaFX & SWT 1
dereki2000 JPanel mit Rückgbe wie bei JOptionPane AWT, Swing, JavaFX & SWT 3
E Hintergrundfarbe setzen in JPanel funktioneirt nicht AWT, Swing, JavaFX & SWT 4
P JPanel KeyListener hinzufügen AWT, Swing, JavaFX & SWT 8
S Nach scrollen verschwindet das zuvor im JPanel gezeichnete AWT, Swing, JavaFX & SWT 2
P Bewegung eines Balkens in eineum JPanel welches als Spielfeld fungiert AWT, Swing, JavaFX & SWT 2
L Swing JPanel Größe anpassen AWT, Swing, JavaFX & SWT 6
D Platzierung von JTextfield in JPanel AWT, Swing, JavaFX & SWT 3
D Swing Anwendung ohne JPanel erstellen AWT, Swing, JavaFX & SWT 1
M Swing JPanel in JScrollPane AWT, Swing, JavaFX & SWT 3
M Zwei JPanel übereinander nur vorderes "repainten" AWT, Swing, JavaFX & SWT 3
J 2D-Grafik Background einer Jpanel Klasse ändern AWT, Swing, JavaFX & SWT 1
J Ziehen eines Buttons im JPanel AWT, Swing, JavaFX & SWT 2
J Button lässt sich nicht auf dem JPanel verschieben AWT, Swing, JavaFX & SWT 5
D zwei JLabel stapeln in einem JPanel AWT, Swing, JavaFX & SWT 5
DaCrazyJavaExpert Swing JPanel "ContentPane" wird nicht gesetzt/angezeigt AWT, Swing, JavaFX & SWT 16
DaCrazyJavaExpert Swing Größe des JPanel ändern/wird nicht geändert. AWT, Swing, JavaFX & SWT 3
DaCrazyJavaExpert Swing JPanel wird in JScollPane nicht angezeigt AWT, Swing, JavaFX & SWT 2
it_is_all JPanel verschwindet nach Button-Klick AWT, Swing, JavaFX & SWT 2
B Bar Plot in Swing JPanel AWT, Swing, JavaFX & SWT 0
F Screenshot eines JPanel AWT, Swing, JavaFX & SWT 3
S JPanel rotieren, Bild ist abgeschnitten, Clipping? AWT, Swing, JavaFX & SWT 0
M Swing JPanel flüssig verschieben AWT, Swing, JavaFX & SWT 5
G Nur ein JPanel wird angezeigt AWT, Swing, JavaFX & SWT 9
kilopack15 JPanel im laufenden Zustand einfärben AWT, Swing, JavaFX & SWT 2
kilopack15 JPanel Farbverwaltung AWT, Swing, JavaFX & SWT 1
A JScrollPane soll JPanel mit JButtons enthalten und eine Scollbar anzeigen AWT, Swing, JavaFX & SWT 1
A Swing JLabels in einer ForEach Schleife an den JPanel anheften (UNO Netzwerkspiel) AWT, Swing, JavaFX & SWT 1
L JPanel zeichnet im Konstrukter erzeugten Hintergrund nicht AWT, Swing, JavaFX & SWT 10
Java_RY wie kann ich auf JButtons in einem JPanel zugreifen AWT, Swing, JavaFX & SWT 3
F Zeichnung einem JPanel im Layoutmanager zuweisen AWT, Swing, JavaFX & SWT 3
Meeresgott Swing Umgang mit JPanel AWT, Swing, JavaFX & SWT 4
R 2D-Grafik PNG Bild per Graphics auf JPanel AWT, Swing, JavaFX & SWT 9
K JPanel Bilder bei Windows nicht darstellbar AWT, Swing, JavaFX & SWT 6
W Swing JPanel nur einmal nach mehreren Änderungen neu zeichnen AWT, Swing, JavaFX & SWT 1
J Swing Zeichenfläche im JPanel des Haupfenster anzeigen lassen AWT, Swing, JavaFX & SWT 4
A Swing JPanel zeigt Buttons nicht an AWT, Swing, JavaFX & SWT 4
R JPanel überzeichnet alles? AWT, Swing, JavaFX & SWT 1
D Von JPanel auf anderes JPanel zugreifen AWT, Swing, JavaFX & SWT 9
L Swing Teile eines JPanel in eigene Klasse auslagern AWT, Swing, JavaFX & SWT 3
I JPanel - Verwaltung/ Anordnung AWT, Swing, JavaFX & SWT 4
T JComponents zur Laufzeit auf JPanel darstellen AWT, Swing, JavaFX & SWT 10
F Java Swing Rechteck in JPanel zeichnen AWT, Swing, JavaFX & SWT 7
J Linien auf JPanel zeichnen AWT, Swing, JavaFX & SWT 3
L ImageIcon auf JPanel wird nicht angezeigt(keiner Fehlermeldung) AWT, Swing, JavaFX & SWT 11
M Swing JPanel innerhalb eines Frames verschieben AWT, Swing, JavaFX & SWT 3
T JTextField Array im JPanel wird nicht komplett angezeigt AWT, Swing, JavaFX & SWT 7
K Swing JPanel ueber komplette Form legen AWT, Swing, JavaFX & SWT 1
W Swing Größenänderung vom JPanel im JScrollPane und anschließendes positionieren AWT, Swing, JavaFX & SWT 2
R Komponenten von JPanel bleiben unsichtbar AWT, Swing, JavaFX & SWT 2
O JTabeddpane aber jedes JPanel als eigene Klasse anlegen AWT, Swing, JavaFX & SWT 7
llabusch Linien in JPanel zeichnen AWT, Swing, JavaFX & SWT 6
I (JPanel) paintComponent mit Zeitverschiebung (Sleep/Wait) AWT, Swing, JavaFX & SWT 1
H Netbeans Designer: Probleme mit JPanel und JFrame AWT, Swing, JavaFX & SWT 2
S jpanel anchor bottom AWT, Swing, JavaFX & SWT 1
thobren Swing Im JPanel wird nur TextArea gelöscht AWT, Swing, JavaFX & SWT 13
A JPanel größe verändern AWT, Swing, JavaFX & SWT 4
G JPanel komponente Löschen AWT, Swing, JavaFX & SWT 7
F JPanel "verschmelzen" GridLayout AWT, Swing, JavaFX & SWT 10
B Dropdown "Einstellungen" auf JPanel, transparent AWT, Swing, JavaFX & SWT 1
D GlassPane für JPanel AWT, Swing, JavaFX & SWT 2
F JPanel "zeichnet" keinen Text AWT, Swing, JavaFX & SWT 14
T Swing Index für Komponente in JPanel? AWT, Swing, JavaFX & SWT 6
Z Probleme mit JPanel's AWT, Swing, JavaFX & SWT 6
T Probleme mit Anzeige von Elementen im JPanel AWT, Swing, JavaFX & SWT 1
R JScrollPane überdeckt JPanel? AWT, Swing, JavaFX & SWT 7
O 2D-Grafik Zeichenfläche auf JPanel AWT, Swing, JavaFX & SWT 4
H JTree in JScrollPane passt sich nicht an Größe von JPanel an AWT, Swing, JavaFX & SWT 2
H Position eines JLabel in einem JPanel AWT, Swing, JavaFX & SWT 2
A JPanel Bild laden (Porblem mit Dateipfad) AWT, Swing, JavaFX & SWT 2
K Swing paintComponent, JPanel auslagern, ChangeEvents AWT, Swing, JavaFX & SWT 7
L GUI - Jpanel - Splitpane will nicht aktualisieren AWT, Swing, JavaFX & SWT 4
M Mehrere Jpanel in einem JScrollPane (Layout) AWT, Swing, JavaFX & SWT 2
dat_vin Zeichenbrett (JPanel) AWT, Swing, JavaFX & SWT 10
K Swing JPanel nach oben und links vergrößern AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben