22. februar 2002 - 09:50Der er
1 kommentar og 1 løsning
JInternalFrame
Jeg har lavet et program hvor jeg i en JFrame har sat en JInternalFramne og kune godt tænke mig hvis der var en eller anden der havde et stykke kode eller en metode der kunne gøre at denne ikke kunne flyttes, jeg tænker ikke på resizable, men mere noget med at framen skal fyses fast hvor den er sat
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
Du kan ikke på en InternalFrame bestemme, at det ikke må flyttes, ligesom det gælder for en JFrame. Det du skal bruge af adfærd ligner et JWindow, men der findes ikke en JInternalWindow klasse...
Nå, men alle frames i en JDesktopPane håndteres af en DesktopManager, som har medindflydelse, herunder når frames bliver flyttet og resizet. Her kan man lave et hack for at løse din situation.
Eks:
public class Test { public static void main(String[] args) { JFrame f = new JFrame("Hello desk world"); JDesktopPane desk = new JDesktopPane(); // Populate with internals or whatever.
// This code is provided only to show the principles, it is not // intended as a good implementation of a given problem. public class SampleDesktopManager extends DefaultDesktopManager { protected static final String RESIZING="RESIZING";
public void beginResizingFrame(JComponent f, int dir) { f.putClientProperty(RESIZING, Boolean.TRUE); } public void endResizingFrame(JComponent f) { f.putClientProperty(RESIZING, Boolean.FALSE); }
public void setBoundsForFrame(JComponent f, int x, int y, int w, int h) { if(f instanceof JInternalFrame) { JInternalFrame frame = (JInternalFrame) f; boolean resizing = false; Object o = frame.getClientProperty(RESIZING); if (o != null && o instanceof Boolean) resizing=((Boolean)o).booleanValue();
if (!resizing) { // If not resizing, then we are moving. if (isThisTheFrameNotToMove(frame)) return; } } // All else will be set normally. super.setBoundsForFrame(f, x, y, h); } }
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.