Menüs und ändlichen überzeichenen JPanel

plammy

Bekanntes Mitglied
Hallo :).. Ich bin grade voll irritiert.. Ich habe eine JFrame-Klasse, wo alles abgerufen wird und meine JMenu und so... eine andere Klasse CreateNeu() extends JPanel, die sich öffnet wenn man im Menü der Punkt 'Neu' auswählt.. so.. in diese CreateNeu()-Klasse habe ich 2 Panels.. links und rechts.. der rechte Ranel ist mit textfelder zum eingeben und der linke da wo gezeichnet wird anhand der eingaben von den Textfeldern... das Problem!! : Wenn ich in dem linken Panel was gezeichnet hab und dann öffne ich das Menü oder geh mit iwelchen Windows-Fenster dadrüber löscht sich der Teil von dem schon gezeichnten.. Woran liegst??
 

XHelp

Top Contributor
Nach der durch und durch unverständlicher Beschreibung würde ich stark darauf tippen, dass es an deinem Code liegt.
 

jgh

Top Contributor
meine glaskugel sagt, du hast den super.paint(g), bzw. super.paintComponent(g) am Anfang vergessen...außerdem erinnere ich dich insbesondere an die Einhaltung der CodeConventions!
 

XHelp

Top Contributor
Nach dem es dir offensichtlich klar ist, dass es an deinem Code liegt, ist es dann nicht offensichtlich, dass es auch nicht schaden könnte deinen Code zu zeigen? Klar könnte man einige Vermutungen anstellen woran das liegen könnte und wie man das beheben könnte, aber es wäre doch sinnvoller konkrete Frage zu einem konkretem Code zu beantworten.
 

jgh

Top Contributor
s***** glaskugel, :(
ne mal im Ernst, das kann hunderte von Gründen haben...evtl. verwendest du auch swing- und awt-Komponenten gemeinsam, oder oder oder...den hinweis von xhelp solltest du dir zu herzen nehmen.
 

plammy

Bekanntes Mitglied
naa gut :)

Code:
public class CreateFile extends JPanel implements ActionListener{ 
   
    public CreateFile(){
      initComponents();
    }

     public void initComponents() {
        sidebarPanel = new JPanel();
        editPanel = new JPanel();


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


        
        editPanel.setBackground(new Color(123,107,99));

        GroupLayout editPanelLayout = new GroupLayout(editPanel);
        editPanel.setLayout(editPanelLayout);
        editPanelLayout.setHorizontalGroup(
            editPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGap(0, 516, Short.MAX_VALUE)
        );
        editPanelLayout.setVerticalGroup(
            editPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGap(0, 0, Short.MAX_VALUE)
        );

     ......................
     
       GroupLayout sidebarLayout = new GroupLayout(sidebarPanel);
        sidebarPanel.setLayout(sidebarLayout);
        sidebarLayout.setHorizontalGroup(
            sidebarLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGroup(sidebarLayout.createSequentialGroup()
                .addContainerGap()
                
        ...................


   
        GroupLayout layout = new GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(editPanel, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
               
                .addComponent(sidebarPanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addComponent(editPanel)
            .addComponent(sidebarPanel, GroupLayout.DEFAULT_SIZE, 800, Short.MAX_VALUE)
        );
       
       
    }


    @Override
    public void actionPerformed(ActionEvent object) {
        
        //Aktion bei Button OK
        if (object.getSource() == button_ok){
           
             paintComponent(editPanel.getGraphics());

        }


public void paintComponent(Graphics g) {
        
        int startPosX = 20;
       
        int startPosY = 150;

   ..........

    Rectangle headerRect = new Rectangle(startPosX,startPosY,500,500);    
        g.setColor(new Color(230,227,224)); //gray
        g.fill3DRect(headerRect.x, headerRect.y, headerRect.width, headerRect.height,true);
        g.setColor(new Color(211,111,53)); //orange


Code:
public class GUI extends JFrame implements ActionListener{

    
    /**
     * Erstelle neue GUI
     */
    public GUI() {
        initComponents();
        setTitle("Layout Tool");
        setSize(900,900);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }


    static GUI gui = new GUI();


     void initComponents() {
 startPanel = new JPanel();   
        
    
        menubar = new JMenuBar();
        menuFile = new JMenu();
        menuAds = new JMenu();
             
        neu = new JMenuItem();
        open = new JMenuItem();
      ......................

        banderolle.addActionListener(this);
        menuAds.add(banderolle);

        menubar.add(menuAds);

        setJMenuBar(menubar);


        GroupLayout jPanel1Layout = new GroupLayout(startPanel);
        startPanel.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGap(0, 400, Short.MAX_VALUE)
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGap(0, 300, Short.MAX_VALUE)
        );

        GroupLayout layout = new GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addComponent(startPanel, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(startPanel, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
          
        );

        pack();
    }

    
    static  final String newline = "\n";
    public void actionPerformed(ActionEvent object) {
        
        //Neu
        if (object.getSource() == neu){         
            setContentPane(new CreateFile());
            setVisible(true);      
        
        }
        ...................................
public static void main(String args[]) {
        /*
         * Set the Nimbus look and feel
         */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /*
         * If Nimbus (introduced in Java SE 6) is not available, stay with the
         * default look and feel. For details see
         * [url=http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html]How to Set the Look and Feel (The Java™ Tutorials > Creating a GUI With JFC/Swing > Modifying the Look and Feel)[/url]
         */
       try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(GUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(GUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(GUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(GUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /*
         * Create and display the form
         */
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                GUI.gui.setVisible(true);
            }
        });
    }
 

XHelp

Top Contributor
Code:
getGraphics
sollte man nie benutzen. Du zeichnest den Inhalt von irgendwas irgendwohin irgendwann warumauchimmer. Wenn du dein Panel hinzufügen willst, dann solltest du es über
Code:
add
machen.
 

plammy

Bekanntes Mitglied
editPanel.add() ??? wie geht das genau.. also wie sage ich der soll das adden was in paintComponent steht weil das mehrere rechteche sind
 

jgh

Top Contributor
Java:
 if (object.getSource() == button_ok){
           
             paintComponent(editPanel.getGraphics());

        }
sowas macht man nicht, sowohl das getGraphics, als auch das aufrufen von paintComponent.
ruf da einfach ein [c]repaint()[/c] auf die entsprechende Komponente auf.
 

plammy

Bekanntes Mitglied
wenn ich nur

Java:
 @Override
    public void actionPerformed(ActionEvent object) {
              if (object.getSource() == button_ok){
                     repaint();
              }
    }

schreibe tut sich nix :(
 

r.w.

Bekanntes Mitglied
Hallo Plammy,

vielleicht bin ich ja noch nicht ganz wach, aber wenn ich das richtig sehe,
zeichnest Du in der paintComponent() des Parent-Panel (Klasse CreateFile).
Du müsstest, aber die paintComponent()-Methode des linken JPanel überschreiben,
wenn die Zeichnung dort erscheinen soll.

VG ROlf
 

plammy

Bekanntes Mitglied
ich muss ja unter button_ok sagen dass ich in edit Panel zeichenen möchte.. wenn ich editPanel.repaint(); schreibe zeichnet er gar nicht:rtfm:
 

njans

Top Contributor
[STRIKE]Vielleicht sehe ich es nicht, aber solltest du nicht da ein CreateFile-Panel verwenden, anstelle eines normalen JPanels, immerhin überschreibst du ja in dem die paintComponent.[/STRIKE]

Edit:
Java:
if (object.getSource() == neu){         
            setContentPane(new CreateFile());
            setVisible(true);      
 }

Solltest du da nicht editPanel = new CreateFile(); machen? So bleibt editPanel eben nur ein normales JPanel.
 

plammy

Bekanntes Mitglied
in der Klasse CreatePanel() habe ich 2 JPanels definiert.. einmal editPanel (links wo gezeichnet werden soll ) und einmal sidebarPanel(recht wo verschiede Textfelder zum eingabe a sind)..
 

r.w.

Bekanntes Mitglied
Hallo plammy,

so funktioniert das nicht.

1. sollte man vermeiden, paintComponent() selbst aufzurufen.
Das macht das System selbst.

2. Du überschreibst die paintComponent() von CreateFile.
Wenn Du zum Test mal Deine darin enthaltenen editPanel und sidebarPanel
entfernst, bzw. unsichtbar machst, wirst Du sehen, dass dein headerRect
dort 1a gezeichnet wird. Auch wenn Du ein Menü aufklappst. Das liegt daran,
das diese paintComponent() immer dann vom System mit dem Graphics-Context
von CreatFile aufgerufen wird, wenn ein Neuzeichnen notwendig ist.
Genau das ist aber Quatsch, weil Du ja eigentlich gar nicht im JPanel 'CreateFile'
zeichnen willst, sondern im editPanel.

3. Im ActionListener des Buttons rufst Du dann diese paintComponent() mit dem
Graphics-Context des editPanel auf ( editPanel.getGraphics() ).
Es wird dann, und NUR jeweils nach dem Klick auf den Button genau einmal
das headerRect in Dein sidebarPanel gezeichnet.


Wenn Du möchtest, dass Dein headerRect dauerhaft im editPanel
angezeigt wird und beim Aufklappen Deines Menüs erhalten bleibt,
musst Du die paintComponent-Methode von editPanel überschreiben.

Entweder leitest Du für editPanel (wie bei CreateFile) eine neue Klasse von JPanel
ab und überschreibst sie da. Oder Du machst es bei der Instanzierung von editPanel.


VG ROlf
 

plammy

Bekanntes Mitglied
hab so versucht aber es funktioniert nicht..


Java:
        editPanel.setBackground(new Color(123, 107, 99));

editPanel.repaint();


        Border tb_edit = BorderFactory.createEtchedBorder(1, color_lightgray, new Color(42, 38, 36));
        editPanel.setBorder(tb_edit);
        
        GroupLayout editPanelLayout = new GroupLayout(editPanel);
        editPanel.setLayout(editPanelLayout);
        editPanelLayout.setHorizontalGroup(
            editPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGap(0, 579, Short.MAX_VALUE)
        );
        editPanelLayout.setVerticalGroup(
            editPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGap(0, 0, Short.MAX_VALUE)
        );
 

r.w.

Bekanntes Mitglied
Also gut, dann ein möglicher Weg (fast) zum Abschreiben :-/
(Auf Deinen ersten QuellCode bezogen.)

Erzeuge zunächst eine neue Klasse 'EditPanel' nach dem folgenden Prinzip...

Java:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Rectangle;
import javax.swing.JPanel;


public class EditPanel extends JPanel {
   
//...
   
   @Override
   protected void paintComponent(Graphics g) {
      super.paintComponent(g);
             
        int startPosX = 20;
       
        int startPosY = 150;

//...

    Rectangle headerRect = new Rectangle(startPosX,startPosY,500,500);    
        g.setColor(new Color(230,227,224)); //gray
        g.fill3DRect(headerRect.x, headerRect.y, headerRect.width, headerRect.height,true);
        g.setColor(new Color(211,111,53)); //orange 
//...      
   }
  
//...   
   
   
}

Ersetze dann in der Klasse CreateFile bei der Instanzierung
'editPanel = new JPanel()' durch
'editPanel = new EditPanel()' ...


Java:
public class CreateFile extends JPanel implements ActionListener{ 
   
    public CreateFile(){
      initComponents();
    }

     public void initComponents() {
        sidebarPanel = new JPanel();
        editPanel = new EditPanel(); // <----------

//...

    }


//...

}

... und entferne aus der Klasse 'CreateFile' die Methode 'paintComponent()'

Ich hoffe, ich hab keine Tippfehler eingebaut und nichts vergessen, da ich
das jetzt einfach so zusammenkopiert und hier reingetippt hab.

Wenn Du es damit nicht hinbekommst, musst Du jetzt leider auf weitere Hilfe
von anderer Seite hoffen. Das gilt auch für den Part, in dem bei Änderung der
Werte im sidebarPanel der editPanel aktualisiert werden muss.

Denn heute Nacht geht es erst mal in den Urlaub. ;-)

VG und viel Erfolg,
ROlf
 

plammy

Bekanntes Mitglied
ich das genau so gemacht wie du gesagt hast aber es will nicht zeichnen :(


Java:
public class EditPanel extends JPanel {
   


public  EditPanel()
{
     setBackground(new Color(42, 38, 36));   
}
   @Override
   protected void paintComponent(Graphics g) {
      super.paintComponent(g);
             
     int centerX = CreateFile.cf.editPanel.getWidth()/2;     
        int beginPosition = (CreateFile.cf.editPanel.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(new Color(230,227,224)); //gray
        headerRect.translate(0,CreateFile.cf.tile1H);
        g.fill3DRect(headerRect.x, headerRect.y, headerRect.width, headerRect.height,true);
        g.setColor(new Color(211,111,53)); //orange
     
//        g.drawString(web,centerX+20,headerRect.height/2+150);
        
       
        //content
        Rectangle contentRect = new Rectangle(centerX-CreateFile.cf.contentW/2,beginPosition + CreateFile.cf.headerH,CreateFile.cf.contentW,CreateFile.cf.contentH);
        g.setColor(new Color(230,27,224));
       contentRect.translate(0,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(new Color(20,227,224));
        footerRect.translate(0,CreateFile.cf.tile1H);
        g.fill3DRect(footerRect.x, footerRect.y, footerRect.width, footerRect.height,true);
        

        //tile 1
        Rectangle tile1Rect = new Rectangle(centerX-CreateFile.cf.headerW/2,beginPosition,CreateFile.cf.tile1W,CreateFile.cf.tile1H);
        g.setColor(new Color(211,111,53));  

        g.fill3DRect(tile1Rect.x, tile1Rect.y, tile1Rect.width, tile1Rect.height,true);
        
        
        }

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

    public void initComponents() 
    {
.................

        //Panels
        websitePanel = new JPanel();
        editPanel = new EditPanel();
        layoutPanel = new JPanel();
        fixFormsPanel = new JPanel(); 
        individualFormsPanel = new JPanel();

        //Labels
        website = new JLabel();
        logo = new JLabel();

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


        editPanel.setBackground(new Color(123, 107, 99));

        Border tb_edit = BorderFactory.createEtchedBorder(1, color_lightgray, new Color(42, 38, 36));
        editPanel.setBorder(tb_edit);
        
        GroupLayout editPanelLayout = new GroupLayout(editPanel);
        editPanel.setLayout(editPanelLayout);
        editPanelLayout.setHorizontalGroup(
            editPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGap(0, 579, Short.MAX_VALUE)
        );
        editPanelLayout.setVerticalGroup(
            editPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGap(0, 0, Short.MAX_VALUE)
        );

        

        GroupLayout layout = new GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(editPanel, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING, false)
                    .addComponent(websitePanel, GroupLayout.Alignment.TRAILING, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(layoutPanel, GroupLayout.Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(individualFormsPanel, GroupLayout.Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(fixFormsPanel, GroupLayout.Alignment.TRAILING,GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .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)
        {   
            headerW = Integer.parseInt(headerWidth.getText());
            headerH = Integer.parseInt(headerHeight.getText());
            contentW = Integer.parseInt(contentWidth.getText());
            contentH = Integer.parseInt(contentHeight.getText());
            footerW = Integer.parseInt(footerWidth.getText());
            footerH = Integer.parseInt(footerHeight.getText()); 
       
           repaint();
         }

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

bERt0r

Top Contributor
http://www.java-forum.org/forum-faq-beitraege/7407-man-fragen-richtig-stellt.html

Wenn du ein Problem hast, beschreibe es und erklär uns was du eigentlich machen willst. Das kann man mit einem Satz erledigen. So wie ich dein Vorhaben verstehe, willst du, wenn auf einen Butten gedrückt wird, ein Panel aufpoppen lassen. Das kann man auf mehrere Arten erreichen, die Methode die du gewählt hast ist aber zum Scheitern verurteilt.

Die Einfachste Möglichkeit ist, das Panel in einen JDialog zu packen und den dann anzuzeigen. Genauso einfach wäre es, das Panel ins normale Layout zu adden, es unsichtbar zu setzten und dann beim Buttondruck sichtbar zu setzten. Weitere Möglichkeiten wären CardLayout oder OverlayLayout.

Ich hab dir die 2 ersten Möglichkeiten mal in ein KSKB verpackt.
import java.awt.BorderLayout;


Java:
public class PlammyDemo extends JFrame
{
	
	private JPanel contentPane;
	private JMenuBar menuBar;
	private JMenu mnMenu;
	private JMenuItem mntmNewMenuItem;
	private JMenuItem mntmNewMenuItem_1;
	private JMenuItem mntmNewMenuItem_2;
	private JButton btnShowPanel;
	private JButton btnShowPanelIn;
	private EditPanel editPanel,editPanelInDialog;
	private JDialog dialog;
	
	class EditPanel extends JPanel
	{
		public EditPanel()
		{
			super();
			
			JLabel lblGibHierWas = new JLabel("Gib hier was ein:");
			add(lblGibHierWas);
			
			JTextField textField_1 = new JTextField();
			add(textField_1);
			textField_1.setColumns(10);
			
			JTextField textField = new JTextField();
			add(textField);
			textField.setColumns(10);
		}
	}
	
	/**
	 * Launch the application.
	 */
	public static void main(String[] args)
	{
		EventQueue.invokeLater(new Runnable()
			{
				public void run()
				{
					try
					{
						PlammyDemo frame = new PlammyDemo();
						frame.setVisible(true);
					} catch (Exception e)
					{
						e.printStackTrace();
					}
				}
			});
	}
	
	/**
	 * Create the frame.
	 */
	public PlammyDemo()
	{
		super("PlammyDemo Frame");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		
		menuBar = new JMenuBar();
		setJMenuBar(menuBar);
		
		mnMenu = new JMenu("Menu");
		menuBar.add(mnMenu);
		
		mntmNewMenuItem = new JMenuItem("New menu item");
		mnMenu.add(mntmNewMenuItem);
		
		mntmNewMenuItem_2 = new JMenuItem("New menu item");
		mnMenu.add(mntmNewMenuItem_2);
		
		mntmNewMenuItem_1 = new JMenuItem("New menu item");
		mnMenu.add(mntmNewMenuItem_1);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		contentPane.setLayout(new BorderLayout(0, 0));
		setContentPane(contentPane);
		
		editPanel=new EditPanel();
		contentPane.add(editPanel,BorderLayout.CENTER);
		editPanel.setVisible(false);
		
		
		btnShowPanel = new JButton("Show Panel");
		btnShowPanel.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) 
			{
				editPanel.setVisible(true);
			}
		});
		contentPane.add(btnShowPanel, BorderLayout.NORTH);
		
		editPanelInDialog=new EditPanel();
		dialog=new JDialog(this);
		dialog.setContentPane(editPanelInDialog);
		dialog.pack();
		
		
		btnShowPanelIn = new JButton("Show Panel in Dialog");
		btnShowPanelIn.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) 
			{
				dialog.setLocationRelativeTo(PlammyDemo.this);
				dialog.setVisible(true);
			}
		});
		contentPane.add(btnShowPanelIn, BorderLayout.SOUTH);
	}
	
}
 

plammy

Bekanntes Mitglied
da meinte ich nicht wirklich :).. jdialog wäre glaube ich nicht ganz ausreichend für das was ich vorhabe... Ich will quasi wie bei photoshop dass man eine neue datei erstellen, die man mit verschiedenen Rechtecken befüllen kann, das erstellte komposition von Rechtecken dann speichern können, drucken und so weiter...




Ich habs grade nur mit ein textfield ausprobiert und mit festen Zahlen und festgestellt dass es doch zeichnet nur es zeichnet unter der JTabbedPane (sieh Bild)... anscheinend gebe ich die Zeichnung an den falschen JPanel ... :rtfm:
 

Anhänge

  • Unbenannt.jpg
    Unbenannt.jpg
    37 KB · Aufrufe: 23
Zuletzt bearbeitet:

bERt0r

Top Contributor
Das gibts nicht vorgefertigt, das musst du selber implementieren. Am wichtigsten ist mal, dass du dir über deine Aufgabe klar wirst und sie in Unteraufgaben einteilst. Versuch doch erstmal einfach nur ein Panel anzuzeigen, in dem du deine Rechtecke malen und anzeigen kannst. Dann sehen wir weiter.
 

Ähnliche Java Themen

Neue Themen


Oben