JPanel neu zeichnen

plammy

Bekanntes Mitglied
Hallo... Ich weiß dass es unheimlich viel im Netz darüber zu finden ist , aber hat mir bis jetzt nix gebracht da es immer noch nicht funktioniert :(((
ich will wenn ich im Menü die Option "Neu" wähle das auch jedes mal wirklich ein neues Element der klasse CreateFile erzeugt wird.. im moment bleibt das was ich schon darauf gezeichnet hab bestehen... also funktioniert das neuzeichnen der JPanel nicht...:noe: ..

Java:
  public void actionPerformed(ActionEvent object) {
        
        //Neu
        if (object.getSource() == neu){    
 
             setContentPane( new CreateFile(););         
             revalidate();
             repaint();
       
        }

ich hab schon revalidate(), removeAll(), remove(), validate() alles priebiert
 
G

Gast2

Gast
Ein einfaches validate() sollte da schon reichen, siehe hier:
Java:
final JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JPanel bluePanel = new JPanel();
bluePanel.setPreferredSize(new Dimension(100,100));
bluePanel.setBackground(Color.BLUE);

JButton button = new JButton("Drück mich");
button.addActionListener(new ActionListener() {
	@Override
	public void actionPerformed(ActionEvent arg0) {
		JPanel redPanel = new JPanel();
		redPanel.setPreferredSize(new Dimension(100,100));
		redPanel.setBackground(Color.RED);
		
		frame.setContentPane(redPanel);
		frame.validate();
	}
});

frame.add(bluePanel);
frame.add(button, BorderLayout.SOUTH);
frame.pack();
frame.setVisible(true);
 

plammy

Bekanntes Mitglied
Java:
public void actionPerformed(ActionEvent object) {
        
        //Neu
        if (object.getSource() == neu){    
      
            
             CreateFile n1 = new CreateFile();    
             setContentPane(n1);         
             validate();
       
       
        }



es tut sich nix ... :( alles beim alten
 

Kevin94

Top Contributor
Dann muss der Fehler wohl oder übel wo anders stecken. Blos weil ein Codezeile nicht das tut, was man erwartet, heist das nicht das der Fehler in der Zeile drüber steckt, er kann auch genauso am anderern Ende des Projekts stecken.
 
G

Gast2

Gast
änderst du mit setContentPane auch wirklich das contentPane des richtigen Frames? Zeig mal die Klasse.
 

plammy

Bekanntes Mitglied
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));
      
        websitePanel = new JPanel();    
        layoutPanel = new JPanel();
        fixFormsPanel = new JPanel(); 
        individualFormsPanel = new JPanel();

        //Labels
        image_label = new JLabel();
        website = new JLabel();
        ..........

        //Textfelder
        websiteTextField = new JTextField();
        headerWidth = new JTextField();
        ...........

        //Buttons
        buttonLogoUpload = new JButton();
        buttonCreateLayout = new JButton();       
        buttonFixForms = new JButton();
        buttonIndividualForms = new JButton();

        ........
     
        headerWidth = new JTextField();
        headerWidth.setDocument(new IntegerField(4));   
        headerHeight = new JTextField();
        headerHeight.setDocument(new IntegerField(4));     
        ..............

        buttonCreateLayout.setText("erstellen");
        buttonCreateLayout.addActionListener(this);
        buttonCreateLayout.addKeyListener(kh);
        
        buttonFixForms.setText("erstellen");
        buttonFixForms.addActionListener(this);
        buttonFixForms.addKeyListener(kh2);
        
        buttonIndividualForms.setText("erstellen");
        buttonIndividualForms.addActionListener(this);
        buttonIndividualForms.addKeyListener(kh3);
        
        buttonLogoUpload.setText("laden..");
        buttonLogoUpload.addActionListener(this);
        buttonLogoUpload.addKeyListener(kh4);
        
        
      
        Border titled_border = BorderFactory.createRaisedSoftBevelBorder();
         
        /*  ****************************   Layouts ************************************* */


        layoutPanel.setBackground(darkGrayPanel);
         
        Border tb_layout = BorderFactory.createTitledBorder(titled_border, "Layout", TitledBorder.LEFT, TitledBorder.TOP,font_border, Color.white);
        layoutPanel.setBorder(tb_layout);

       GroupLayout layoutPanelLayout = new GroupLayout(layoutPanel);
       layoutPanel.setLayout(layoutPanelLayout);
        layoutPanelLayout.setHorizontalGroup(
            layoutPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
              .addGroup(GroupLayout.Alignment.TRAILING, layoutPanelLayout.createSequentialGroup()
                .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGroup(layoutPanelLayout.createParallelGroup(GroupLayout.Alignment.TRAILING)
                    .addComponent(buttonCreateLayout, 86, 86, 86)
                    .addGroup(layoutPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
                        .addGroup(layoutPanelLayout.createSequentialGroup()
                            .addComponent(header, 60, 60, 60)
                            .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(headerWidth, 40, 40, 40)
                            .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(headerHeight, 40, 40, 40))
                        .addGroup(layoutPanelLayout.createSequentialGroup()
                            .addComponent(content, 60, 60, 60)
                            .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(contentWidth, 40, 40, 40)
                            .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(contentHeight, 40, 40, 40))
                        .addGroup(layoutPanelLayout.createSequentialGroup()
                            .addComponent(footer, 60, 60, 60)
                            .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(footerWidth, 40, 40, 40)
                            .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(footerHeight, 40, 40, 40))))
                .addGap(14, 14, 14))
        );
        layoutPanelLayout.setVerticalGroup(
            layoutPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGroup(layoutPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layoutPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                    .addComponent(header, 25, 25, 25)
                    .addComponent(headerWidth, 25, 25, 25)
                    .addComponent(headerHeight, 25, 25, 25))
                .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layoutPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                    .addComponent(content, 25, 25, 25)
                    .addComponent(contentWidth, 25, 25, 25)
                    .addComponent(contentHeight, 25, 25, 25))
                .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layoutPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(footer, 25, 25, 25)
                    .addComponent(footerWidth, 25, 25, 25)
                    .addComponent(footerHeight, 25, 25,25))
                .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, 18, Short.MAX_VALUE)
                .addComponent(buttonCreateLayout, 30, 30, 30)
                .addContainerGap())
        );

        fixFormsPanel.setBackground(darkGrayPanel);
        Border tb_fix = BorderFactory.createTitledBorder(titled_border, "Feste Plätze", TitledBorder.LEFT, TitledBorder.TOP,font_border, Color.white);
        fixFormsPanel.setBorder(tb_fix);
        
        GroupLayout fixFormsPanelLayout = new GroupLayout(fixFormsPanel);
        fixFormsPanel.setLayout(fixFormsPanelLayout);
        fixFormsPanelLayout.setHorizontalGroup(
            fixFormsPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGroup(GroupLayout.Alignment.TRAILING, fixFormsPanelLayout.createSequentialGroup()
                .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGroup(fixFormsPanelLayout.createParallelGroup(GroupLayout.Alignment.TRAILING)
                    .addComponent(buttonFixForms, 86, 86, 86)
                    .addGroup(fixFormsPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
                        .addGroup(fixFormsPanelLayout.createSequentialGroup()
                            .addComponent(tile1, 60, 60, 60)
                            .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(tile1Width, 40, 40, 40)
                            .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(tile1Height, 40, 40, 40))
                        .addGroup(fixFormsPanelLayout.createSequentialGroup()
                            .addComponent(tile2, 60, 60, 60)
                            .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(tile2Width, 40, 40, 40)
                            .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(tile2Height, 40, 40, 40))
                        .addGroup(fixFormsPanelLayout.createSequentialGroup()
                            .addComponent(tile3, 60, 60, 60)
                            .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(tile3Width, 40, 40, 40)
                            .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(tile3Height, 40, 40, 40))))
                .addGap(14, 14, 14))
        );
        fixFormsPanelLayout.setVerticalGroup(
            fixFormsPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGroup(fixFormsPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(fixFormsPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                    .addComponent(tile1, 25, 25, 25)
                    .addComponent(tile1Width, 25, 25, 25)
                    .addComponent(tile1Height, 25, 25, 25))
                .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(fixFormsPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                    .addComponent(tile2, 25, 25, 25)
                    .addComponent(tile2Width, 25, 25, 25)
                    .addComponent(tile2Height, 25, 25, 25))
                .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(fixFormsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(tile3, 25, 25, 25)
                    .addComponent(tile3Width, 25, 25, 25)
                    .addComponent(tile3Height, 25, 25,25))
                .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, 18, Short.MAX_VALUE)
                .addComponent(buttonFixForms, 30, 30, 30)
                .addContainerGap())
        );

        individualFormsPanel.setBackground(darkGrayPanel);
       
        Border tb_individual = BorderFactory.createTitledBorder(titled_border, "Individuelle Plätze", TitledBorder.LEFT, TitledBorder.TOP,font_border, Color.white);
        individualFormsPanel.setBorder(tb_individual);
        
        GroupLayout individualFormsPanelLayout = new GroupLayout(individualFormsPanel);
        individualFormsPanel.setLayout(individualFormsPanelLayout);
        individualFormsPanelLayout.setHorizontalGroup(
            individualFormsPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGroup(GroupLayout.Alignment.TRAILING, individualFormsPanelLayout.createSequentialGroup()
                .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGroup(individualFormsPanelLayout.createParallelGroup(GroupLayout.Alignment.TRAILING)
                    .addComponent(buttonIndividualForms, 86, 86, 86)
                    .addGroup(individualFormsPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
                        .addGroup(individualFormsPanelLayout.createSequentialGroup()
                            .addComponent(baustein, 60, 60, 60)
                            .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(bausteinWidth, 40, 40, 40)
                            .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(bausteinHeight, 40, 40, 40))
                        ))
                .addGap(14, 14, 14))
        );
        individualFormsPanelLayout.setVerticalGroup(
            individualFormsPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGroup(individualFormsPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(individualFormsPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                    .addComponent(baustein, 25, 25, 25)
                    .addComponent(bausteinWidth, 25, 25, 25)
                    .addComponent(bausteinHeight, 25, 25, 25))  
                .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, 18, Short.MAX_VALUE)
                .addComponent(buttonIndividualForms, 30, 30, 30)
                .addContainerGap())
        );


        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)          
            .addGap(2,2,2)
          
        );
        editPanelLayout.setVerticalGroup(
            editPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)           
            .addGap(2,2,2)
        );

        
       websitePanel.setBackground(darkGrayPanel);
      
        Border tb_wesite = BorderFactory.createTitledBorder(titled_border, "Webseite", TitledBorder.LEFT, TitledBorder.TOP,font_border, Color.white);
        websitePanel.setBorder(tb_wesite);
            
       GroupLayout websitePanelLayout = new GroupLayout(websitePanel);
        websitePanel.setLayout(websitePanelLayout);
        websitePanelLayout.setHorizontalGroup(
            websitePanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
             .addGroup(GroupLayout.Alignment.TRAILING, websitePanelLayout.createSequentialGroup()
                .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGroup(websitePanelLayout.createParallelGroup(GroupLayout.Alignment.TRAILING)               
                    .addGroup(websitePanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)          
                        .addGroup(websitePanelLayout.createSequentialGroup()
                            .addComponent(logo, 60, 60, 60)
                            .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(buttonLogoUpload, 86, 86, 86))
                        .addGroup(websitePanelLayout.createSequentialGroup()
                            .addComponent(website, 60, 60, 60)
                            .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(websiteTextField, 85, 85, 85))))
                .addGap(2, 2, 2))
        );
        websitePanelLayout.setVerticalGroup(
            websitePanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGroup(websitePanelLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(websitePanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                    .addComponent(website, 25, 25, 25)
                    .addComponent(websiteTextField, 25, 25, 25))
                .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(websitePanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                    .addComponent(logo, 25, 25, 25)
                    .addComponent(buttonLogoUpload, 30, 30,30))
                .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
              .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,0, 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.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                
                
        );
       
    }
  

    @Override
    public void actionPerformed(ActionEvent object) 
    {
        if (object.getSource() == buttonLogoUpload)
        {   
           JFileChooser fc = new JFileChooser();          
            fc.setFileFilter(new FileNameExtensionFilter("*.jpg;*.gif","jpg", "gif"));
            
            int state = fc.showOpenDialog(null);
            if ( state == JFileChooser.APPROVE_OPTION ){
                File file = fc.getSelectedFile();  
//                BufferedImage bi;
                    try {
                    image = ImageIO.read(file);
                    
//                    image_label.setIcon(new ImageIcon(bi));
                    } catch (IOException e1) {
                   
                        e1.printStackTrace();
                    }
                       mt = new MediaTracker(this);    
                       mt.addImage(image,0);
        }
        
           
        } 
        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();
        } 
        if (object.getSource() == buttonFixForms)
        {   
            cf.tile1W = Integer.parseInt(tile1Width.getText());
            cf.tile1H = Integer.parseInt(tile1Height.getText());
            cf.tile2W = Integer.parseInt(tile2Width.getText());
            cf.tile2H = Integer.parseInt(tile2Height.getText());
            cf.tile3W = Integer.parseInt(tile3Width.getText());
            cf.tile3H = Integer.parseInt(tile3Height.getText()); 

             repaint();
        } 
        if (object.getSource() == buttonIndividualForms)
        {   
             cf.bausteinW = Integer.parseInt(bausteinWidth.getText());
             cf.bausteinH = Integer.parseInt(bausteinHeight.getText()); 
                     
            repaint();
            
        } 
    }

 
 
   // Variablen deklarieren
Image image;
MediaTracker mt;
     JTabbedPane tabbedPane;
     EditPanel editPanel;
     JScrollPane scrollPane;
     JPanel websitePanel;
     JPanel layoutPanel;
     JPanel fixFormsPanel; 
     JPanel individualFormsPanel;

     JLabel image_label;
    
     JLabel website;   
     JLabel logo;
     JLabel content;
     JLabel header;
     JLabel footer;
     JLabel tile1;
     JLabel tile2;
     JLabel tile3;
     JLabel baustein;
     JLabel hinweis;
    
     JTextField bausteinWidth;
     JTextField bausteinHeight;
     JTextField contentHeight;
     JTextField contentWidth;
     JTextField footerHeight;
     JTextField footerWidth;
     JTextField headerHeight;
     JTextField headerWidth; 
     JTextField tile1Height;
     JTextField tile1Width;  
     JTextField tile2Height;
     JTextField tile2Width;   
     JTextField tile3Height;
     JTextField tile3Width;
     JTextField websiteTextField;

     JButton buttonLogoUpload;
     JButton buttonCreateLayout;
     JButton buttonFixForms;
     JButton buttonIndividualForms;
 
     int headerW;
     int headerH;
     int contentW;
     int contentH;
     int footerW;
     int footerH; 
     int tile1W;
     int tile1H;
     int tile2W;
     int tile2H;
     int tile3W;
     int tile3H;
     int bausteinW;
     int bausteinH;

    //Farben definieren
    Color orangeText = new Color(234, 129, 68);
    Color darkGrayPanel  = new Color(42, 38, 36); 
    Color lightGrayPanel = new Color(123, 107, 99);
   
      
    //Schriftart definieren
    Font font_border = new Font("SansSerif", Font.PLAIN, 12);
    Font font_button = new Font("SansSerif", Font.BOLD, 10);
    


    

}
 

plammy

Bekanntes Mitglied
und noch die Klasse EditPanel


Java:
package ltp;

import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.border.TitledBorder;
import javax.swing.plaf.ColorUIResource;
import javax.swing.plaf.metal.MetalTabbedPaneUI;

/**
 *
 * @author mandazhieva
 */
public class EditPanel extends JPanel
{
    
    Image img;
    int x2, y2;
    int x1,y1;
    int x,y;
    boolean pressOut = false;
 
    Color grayRect = new Color(230,227,224);
    Color orangeRect = new Color(211,111,53);
    
   
    
    Rectangle bausteinRect;

    public  EditPanel()
    {
       
        /* ********************* Mouse Listener ***************************  */
        addMouseListener(new MouseAdapter() 
        {
           
            public void mousePressed(MouseEvent e) 
            {  
                repaint();
                x1 = e.getX();
                y1 = e.getY();
                
                

            }
            
            public void mouseReleased(MouseEvent e) 
            {
               
              repaint();
            }
            
        });

     
        /* ****************** Mouse Motion Listener ***********************  */
        addMouseMotionListener(new MouseMotionAdapter() 
        {
       
            public void mouseDragged(MouseEvent e) 
            {
                x2 = e.getX();
                y2 = e.getY();
                x = x + x2 - x1;
                y = y +y2 -y1;
                x1 = x2;
                y1 = y2;
               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(CreateFile.cf.image,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(0, 0,CreateFile.cf.bausteinW,CreateFile.cf.bausteinH);
            g.setColor(orangeRect);  
            g.fill3DRect(x, y, bausteinRect.width, bausteinRect.height,true);        
       
            
    }

  
    
}
 

Harry Kane

Top Contributor
Ich glaube gefragt war nicht der Quellcode von CreateFile, sondern der Quellcode von dem JFrame, in dem eine neue Instanz von CreateFile erzeugt und als content pane verwendet wird.
Kürzer: der Quellcode von der Klasse, in der deine actionPerformed-Methode aus dem ersten Post deklariert ist.
Was mir aufgefallen ist: in der paintComponent methode von EditPanel verwendest du immer dieselbe Instanz von CreateFile, nämlich die, die als statische Variable der Klasse definiert wurde.
 

plammy

Bekanntes Mitglied
Was mir aufgefallen ist: in der paintComponent methode von EditPanel verwendest du immer dieselbe Instanz von CreateFile, nämlich die, die als statische Variable der Klasse definiert wurde.

Ja das stimmt, aber nur weil es sonst nicht klappt mit dem Daten auslesen aus den Textfelder, die ich später zum Zeichnen verwende
 

Harry Kane

Top Contributor
Ja das stimmt, aber nur weil es sonst nicht klappt mit dem Daten auslesen aus den Textfelder, die ich später zum Zeichnen verwende
Komische Begründung. Klingt so als hättest du einen happigen Designfehler in deinem Klassendesign.
Kannst du aufschreiben, was deine Klassen CreateFile und EditPanel überhaupt tun sollen?
Ich glaube du brauchst in etwa folgendes:
1. Eine Klasse die von JPanel oder JComponent abgeleitet ist und die Koordinaten mehrerer Rechtecke speichern kann. Die preferredSize soll automatisch so bestimmt werden, dass alle Rechtecke zu sehen sind. Diese Klasse soll ausserdem ein Image verwalten, was innerhalb der Rechtecke angezeigt werden kann.
2. Ein weiteres, normales JPanel mit ein paar Textfeldern, aus denen die Koordinaten eines Rechtecks ausgelesen werden. Bei einer geeigneten Benutzeraktion soll aus den Textfeld-Inhalten ein Rechtecke konstruiert und an die Klasse unter 1. übergeben werden.
3. Die Möglichkeit, eine Grafikdatei zu laden. Das sollte über einen einfachen JFileChooser gehen.
 

plammy

Bekanntes Mitglied
genau das versuche ich :toll:.. klappt leider nioch nicht so ganz.. ich bin auch voll Anfänger.. aber so langsam komme ich voran nach tausend mal dies und das ändern.. Übung macht den Meister.. ich kann auch nur durch testen und probieren lernen... :) ist halt so bei mir :)...


Also in EditPanel zeichne ich alle Rechtecke anhand von eingegebene Werte
in CreateFile erstelle ich alle TextFelder alle Buttons und kompletten Layout (Anordnung der Textfelder u.s.w)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
CptK Funktionsgraphen effizient zeichnen und nur Teile von JPanel erneuern AWT, Swing, JavaFX & SWT 2
W Swing JPanel nur einmal nach mehreren Änderungen neu zeichnen AWT, Swing, JavaFX & SWT 1
F Java Swing Rechteck in JPanel zeichnen AWT, Swing, JavaFX & SWT 7
J Linien auf JPanel zeichnen AWT, Swing, JavaFX & SWT 3
llabusch Linien in JPanel zeichnen AWT, Swing, JavaFX & SWT 6
M Kein Zeichnen der Figuren auf JPanel AWT, Swing, JavaFX & SWT 4
X Swing JPanel mehrere Ebenen zeichnen AWT, Swing, JavaFX & SWT 13
N JPanel neu zeichnen AWT, Swing, JavaFX & SWT 10
S Swing Bild auf jPanel nach Änderung von JComboBox zeichnen AWT, Swing, JavaFX & SWT 4
T Oval auf ein JPanel zeichnen AWT, Swing, JavaFX & SWT 3
S Swing Bild in JPanel in ScrollPane neu zeichnen AWT, Swing, JavaFX & SWT 2
H String auf Knopfdruck in JPanel zeichnen. AWT, Swing, JavaFX & SWT 6
L Freies zeichnen auf JPanel AWT, Swing, JavaFX & SWT 3
das-mo AWT In JPanel 2mal zeichnen AWT, Swing, JavaFX & SWT 3
R JPanel auf JFrame neu zeichnen AWT, Swing, JavaFX & SWT 11
P RAM-Auslastung - Problem. Zeichnen von JPEGs auf JPanel AWT, Swing, JavaFX & SWT 2
A Swing Zeichnen auf JPanel AWT, Swing, JavaFX & SWT 4
B Zeichnen von Bildern auf JPanel aus eigenem Objekt AWT, Swing, JavaFX & SWT 19
B Swing JPanel in Abhängigkeit von DefaultListModel Instanz neu zeichnen AWT, Swing, JavaFX & SWT 3
S auf einem mit Netbeans (GUI) erstellten JPanel (eines JFrames) zeichnen? AWT, Swing, JavaFX & SWT 7
Sammay Swing JPanel nach dem einfügen neu zeichnen AWT, Swing, JavaFX & SWT 6
N JPanel zeichnen AWT, Swing, JavaFX & SWT 4
V Bild auf JPanel zeichnen AWT, Swing, JavaFX & SWT 9
G Swing Kreise auf JPanel zeichnen AWT, Swing, JavaFX & SWT 11
V Zeichnen auf JPanel und in JFrame einfügen AWT, Swing, JavaFX & SWT 16
D In JPanel zeichnen AWT, Swing, JavaFX & SWT 11
E Rechteck in JPanel Zeichnen AWT, Swing, JavaFX & SWT 6
S Koordinaten aus Array verwenden zum zeichnen auf JPanel?! AWT, Swing, JavaFX & SWT 3
0din Jpanel will nich alles zeichnen AWT, Swing, JavaFX & SWT 15
R JPanel - BufferedImage - zeichnen großer Bilder AWT, Swing, JavaFX & SWT 2
J Swing JScrollPane nimmt das JPanel zum Zeichnen nicht an AWT, Swing, JavaFX & SWT 5
R JPanel - zeichnen in skalierten Bereich - Linie (X-Achse) nicht sichtbar AWT, Swing, JavaFX & SWT 11
B Zeichnen in jPanel AWT, Swing, JavaFX & SWT 2
R JPanel - Markierung an der Mausposition zeichnen AWT, Swing, JavaFX & SWT 4
R JPanel in JScrollPane - zeichnen der Mausposition AWT, Swing, JavaFX & SWT 3
R JPanel in JScrollPane neu zeichnen AWT, Swing, JavaFX & SWT 7
R JPanel - zeichnen eines Arrays AWT, Swing, JavaFX & SWT 18
G JPanel neu zeichnen mit repaint AWT, Swing, JavaFX & SWT 15
W Zeichnen verschiedener geom. Figuren in einem JPanel AWT, Swing, JavaFX & SWT 5
M In eigene JPanel Klasse zeichnen AWT, Swing, JavaFX & SWT 4
F JPanel übereinander zeichnen AWT, Swing, JavaFX & SWT 4
S Zeichnen in einem JPanel AWT, Swing, JavaFX & SWT 15
N Formen drehen und auf JPanel zeichnen AWT, Swing, JavaFX & SWT 6
B JPanel + Zeichnen AWT, Swing, JavaFX & SWT 3
S Problem mit dem Zeichnen einer Linie auf einem JPanel AWT, Swing, JavaFX & SWT 30
M Auf JPanel zeichnen AWT, Swing, JavaFX & SWT 17
H Punkte auf einem JPanel zeichnen AWT, Swing, JavaFX & SWT 4
G Auf JPanel zeichnen? AWT, Swing, JavaFX & SWT 2
P JPanel Inhalt neu zeichnen AWT, Swing, JavaFX & SWT 5
feuervogel in Jpanel zeichnen AWT, Swing, JavaFX & SWT 3
M JPanel ausserhalb von paintComponent zeichnen AWT, Swing, JavaFX & SWT 6
L Komponente und Grafik gleichzeitig auf JPanel zeichnen AWT, Swing, JavaFX & SWT 11
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
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

Ähnliche Java Themen

Neue Themen


Oben