[JAVA] BorderLayout laat laatst toegevoegde border niet zien

Pagina: 1
Acties:

  • degroot
  • Registratie: December 2003
  • Niet online
Daarstraks werkte het allemaal nog netjes enzo....dus als ik ga zitten CTRL-Z'en dan kom ik weer terug bij de goede basis , maar dat wil ik ff niet:P

Ik heb mijn code een beetje opgevrolijkt.
Benamingen netjes met hoofdletters gedaan en duidelijke namen aan panels etc etc gegeven
Nu doet inene mijn applicatie het niet meer , ik krijg dus het paneeltje met de preview afbeelding niet meer te zien....
Alles zit in deze code
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;

public class test extends JFrame
{
    public static void main(String[] args)
    {   //niewe klasse test aanmaken
        new test();
    }
    
    //Variabelen aanmaken
   private JButton bladerknop ,  resizeknop;
   private JTextField bestandvenster,hoogtevenster,breedtevenster;
   private JLabel filelabel,hoogtelabel,breedtelabel,previewafbeelding;
   private String picturelokatie;
   private Image picture;
    
    public test()
    {   //Frame gegevens vastzetten
        setSize(800,600);
        setTitle("Slice - image Resizer");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
               
        //nieuw paneel aanmaken en layout vastzetten 
        JPanel content =(JPanel) getContentPane(); 
        content.setLayout(new BorderLayout()); 
        
        //dropdownlijstje maken met daarin voorgeprogrammeerde formaten
       JComboBox lijstje = new JComboBox(); 
        
        //2 panelen aanmaken
         JPanel besturingpaneel = new JPanel();
         JPanel afbeeldingpaneel = new JPanel();
    
         //panelen toevoegen
        content.add(besturingpaneel, BorderLayout.NORTH);
        content.add(afbeeldingpaneel, BorderLayout.CENTER);
        
        //knoppen maken en actionlistener aan toevoegen
        bladerknop = new JButton("Blader");
        bladerknop.addActionListener(new knopjeHandler());
        resizeknop = new JButton("Resize!");
        resizeknop.addActionListener(new knopjeHandler());
        
        //tekstvelden maken
        bestandvenster = new JTextField(25);
        hoogtevenster = new JTextField("",5);
        breedtevenster = new JTextField("",5);
        
        //labels aanmaken
        filelabel = new JLabel("File:");
        hoogtelabel = new JLabel("Hoogte:");
        breedtelabel = new JLabel("breedte:");
        ImageIcon icon = new ImageIcon("down.jpg");
        previewafbeelding = new JLabel(icon);
        
        //alles toevoegen aan de desbetreffende panelen
        besturingpaneel.add(filelabel);
        besturingpaneel.add(bestandvenster);
        besturingpaneel.add(bladerknop);
        besturingpaneel.add(hoogtelabel);
        besturingpaneel.add(hoogtevenster);
        besturingpaneel.add(breedtelabel);
        besturingpaneel.add(breedtevenster);
        besturingpaneel.add(resizeknop);
        afbeeldingpaneel.add(previewafbeelding);
        
        getContentPane().add(afbeeldingpaneel);
        getContentPane().add(besturingpaneel);
        
        setVisible(true);
    }
    
    //ActionListener aanmaken die akties uitvoert voor knoppen
    public class knopjeHandler implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            if(e.getSource() == bladerknop)
            { 
                Bladeren();
            }
            else if(e.getSource() == resizeknop)
            {
                String veldlengte = bestandvenster.getText();
                if(veldlengte.length() == 0)
                {   //Popup scherm tonen als er geen image geselecteerd is
                    JOptionPane.showMessageDialog(test.this,"Je moet eerst een afbeelding selecteren voordat je hem kunt resizen","Error mbt image",JOptionPane.ERROR_MESSAGE);
                }
                else
                {
                    
                }
            }
        }
    }
    
    private void Bladeren()
    {   //zoekvenster openen zodat image geselecteerd kan worden en daarna alle gegevens in tekstvelden zetten 
        FileDialog bladervenster = new FileDialog(test.this,"Selecteer een bestand",FileDialog.LOAD);
        bladervenster.show();
        String bestandsnaam = bladervenster.getFile();
        String directory = bladervenster.getDirectory();
        bestandvenster.setText(directory+bestandsnaam);
        picturelokatie = bestandvenster.getText();
        veranderImage();
    }
    
   private void veranderImage()
   {   //plaatje dat in bladervenster geselecteerd is openen en inladen
       picture = getToolkit().getImage(""+picturelokatie);
       MediaTracker media = new MediaTracker(this);
       
       media.addImage(picture,0);
       try
       {
            media.waitForID(0);
       }
       catch(InterruptedException ie)
       {
           System.out.println(ie);
       }
       //hoogte en breedte opvragen 
       int width = picture.getWidth(this);
       int height = picture.getHeight(this);
       
       //hoogte en breedte in tekstvelden zetten
       breedtevenster.setText(""+width);
       hoogtevenster.setText(""+height);
       
       //plaatje als preview laten zien
       previewafbeelding.setIcon(new ImageIcon(picture));
   }
}
.
Het heeft duidelijk met de Panels of BorderLayout te maken want als ik eerst de afbeelingpanel toevoeg laat hij wel correct de afbeelding zien etc etc en als ik het besturings paneel eerst toevoeg dan laat hij die netjes zien..

Beetje vaag maar hopelijk kunnen jullie mij weer een beetje opweg helpen

www.degroot-it.nl


  • sig69
  • Registratie: Mei 2002
  • Laatst online: 14:08
Dit klopt sowieso niet:
Java:
1
2
3
4
5
6
7
8
9
JPanel content =(JPanel) getContentPane();  
content.setLayout(new BorderLayout());  
...     
//panelen toevoegen 
content.add(besturingpaneel, BorderLayout.NORTH); 
content.add(afbeeldingpaneel, BorderLayout.CENTER); 
...
getContentPane().add(afbeeldingpaneel);  <--
getContentPane().add(besturingpaneel); <--

[ Voor 16% gewijzigd door sig69 op 12-05-2006 16:43 ]

Roomba E5 te koop


  • degroot
  • Registratie: December 2003
  • Niet online
sig69 schreef op vrijdag 12 mei 2006 @ 16:33:
Dit klopt sowieso niet:
Java:
1
2
3
4
5
6
7
8
9
JPanel content =(JPanel) getContentPane();  
content.setLayout(new BorderLayout());  
...     
//panelen toevoegen 
content.add(besturingpaneel, BorderLayout.NORTH); 
content.add(afbeeldingpaneel, BorderLayout.CENTER); 
...
getContentPane().add(afbeeldingpaneel);  <--
getContentPane().add(besturingpaneel); <--
Bedankt voor de duidelijke uitleg van wat er zoal niet aan klopt , en wat een mogelijk manier is om het op te lossen.....

FF series:
Ik weet nu dus door jouw reactie wel waar de fout zich bevindt , maar niet wat er fout is....van fouten moet je leren , maar zo leer ik er nog niet echt van natuurlijk

www.degroot-it.nl


  • sig69
  • Registratie: Mei 2002
  • Laatst online: 14:08
Sorry, de fout leek me we duidelijk eigenlijk.
Het punt is dus dat je eerst besturingpaneel en afbeeldingpaneel aan je content panel toevoegt, zoals het hoort, en daarna voeg je ze nog een keer toe (getContentPane() == content) maar dan zonder, NORTH of SOUTH of whatever, wat voor een BorderLayout verplicht is.

Roomba E5 te koop


  • degroot
  • Registratie: December 2003
  • Niet online
Haha ik voel me echt n00b nu :+
In JAVA is me nog weinig duidelijk omdat ik het allemaal nog niet helemaal door heb...
Maar je laatste reply is dus duidelijk antwoord!!
Nu heb ik er iig weer van geleerd
thnQ!!!!!!

www.degroot-it.nl