18. juni 2002 - 11:58
Der er
9 kommentarer
full screen window i java
Hejsa Jeg har følgende: package myprojects.test; import java.awt.*; import java.awt.event.*; import java.awt.Window.*; class Test extends Frame { public Test() { addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { dispose(); System.exit(0); } }); } public static void main(String args[]) { /* int[] intArray = new int[12]; for (int i = 0; i < 12; i++){ intArray[i] = i; } for (int k = 0; k < 12; k++){ System.out.println(""+ intArray[k] +"\n"); } System.out.println("Starting Test...sfdsfsdfdsff"); */ Test mainFrame = new Test(); mainFrame.setSize(100, 100); mainFrame.setTitle("test"); mainFrame.setVisible(true); Window w = new Window(mainFrame); Rectangle bounds = mainFrame.getBounds(); w.setLocation(100 + bounds.x, 100 + bounds.y); w.setVisible(true); w.show(true); } } Men hvorfor kommer der ikke noget Window frem. Framen kommer fint frem men det var jo ikke lige hensigten.
Annonceindlæg fra Academic Work Denmark A/S
Jeg kan se 3 problemer: 1) Du får ikke sat en størrelse på vinduet. Den skal du sætte for at give plads til indhold. Indsæt f.eks.: w.setSize(50, 20); 2) Med din "w.setLocation(100 + bounds.x, 100 + bounds.y);" smider du faktisk vinduet langt ud fra framen. Indsæt f.eks. istedet: w.setLocation(50, 50); 3) Et vindue er usynligt fra starten. Putter du ikke indhold i, kan du ikke se noget. Indsæt f.eks.: Label label = new Label("Testing"); w.add(label); Så skulle du kunne se noget. Den samlede kode kan du se her: import java.awt.*; import java.awt.event.*; import java.awt.Window.*; class Test extends Frame { public Test() { addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { dispose(); System.exit(0); } }); } public static void main(String args[]) { /* int[] intArray = new int[12]; for (int i = 0; i < 12; i++){ intArray[i] = i; } for (int k = 0; k < 12; k++){ System.out.println(""+ intArray[k] +"n"); } System.out.println("Starting Test...sfdsfsdfdsff"); */ Test mainFrame = new Test(); mainFrame.setSize(100, 100); mainFrame.setTitle("test"); mainFrame.setVisible(true); Window w = new Window(mainFrame); Rectangle bounds = mainFrame.getBounds(); w.setSize(50,20); w.setLocation(50,50); Label label = new Label("Testing"); w.add(label); w.setVisible(true); w.show(true); } }
For dit fyldestgørende svar fortjener du virkelig points :) men der kommer intet full screen window frem :-| Der er ingen fejl at se når jeg compailer.
Aha. jamen det erstatter problem nr. 2), som jo slet ikke er relevant, så. Du skal i værktøjskassen og hente bredde og højde på din skærm istedet for framens: Dimension screenDim = Toolkit.getDefaultToolkit().getScreenSize(); w.setSize(screenDim.width,screenDim.height); Koden: import java.awt.*; import java.awt.event.*; import java.awt.Window.*; class WindowInFrame extends Frame { public WindowInFrame() { addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { dispose(); System.exit(0); } }); } public static void main(String args[]) { WindowInFrame mainFrame = new WindowInFrame(); mainFrame.setSize(100, 100); mainFrame.setTitle("test"); mainFrame.setVisible(true); Window w = new Window(mainFrame); Dimension screenDim = Toolkit.getDefaultToolkit().getScreenSize(); w.setSize(screenDim.width,screenDim.height); w.setLocation(0,0); Label label = new Label("Testing"); w.add(label); w.setVisible(true); } } Iøvrigt er "w.show(true);" depricated og "w.setVisible(true);" bør bruges istedet. Måske bruger du en ældre JDK, som ikke fortæller dig det.
har du testet dette hos dig ?
ja, og det virker - men hov..jeg omdøbte jo klassen fra "Test" til "WindowInFrame", fordi jeg selv ville gemme den til en anden god gang. Filen skal hedde "WindowInFrame.java". Sorry!
Hvorfor lave det så besværligt læs dog den tutorial der er til FullScreen under Java 1.4.0
cyberzed << smart ass pathetic << Oki hvis det virker hos dig så må problemet ligge et andet sted for jeg får intet full screen window frem :-|
29. august 2002 - 07:30
#8
Kan godt være det lyder som noget en smart ass fyrer af men den er faktisk ikke tosset :)
15. oktober 2002 - 10:38
#9
En lidt gamle ting men prøv at kør den den burde "do the trick" import java.awt.*; import java.awt.image.*; import java.util.Random; public class MultiBufferTest extends Component{ public static void main(String[] args) { MultiBufferTest test = new MultiBufferTest(); } int width = 640; int height = 480; int size = width * height; int pixels[] = new int[size]; int red; int green; int blue; int alpha = 255; MemoryImageSource source = new MemoryImageSource(width, height, pixels, 0, width); Graphics g; Random r = new Random(); /** constructor */ public MultiBufferTest() { // setup display GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice device = env.getDefaultScreenDevice(); GraphicsConfiguration gc = device.getDefaultConfiguration(); // create frame Frame mainFrame = new Frame(gc); mainFrame.setUndecorated(true); mainFrame.setIgnoreRepaint(true); // start fullscreen device.setFullScreenWindow(mainFrame); device.setDisplayMode(new DisplayMode(width, height, 16, 85)); // setup doubelbuffering mainFrame.createBufferStrategy(2); BufferStrategy bufferStrategy = mainFrame.getBufferStrategy(); // setup image source source.setAnimated(true); Image image = createImage(source); // loop for 50 times and draw random pixels for (int t = 0; t < 50; t++) { // get offscreen image g = bufferStrategy.getDrawGraphics(); for (int j = 0; j < size; j++) { // randomize colors red = Math.abs(r.nextInt()) % 255; green = Math.abs(r.nextInt()) % 255; blue = Math.abs(r.nextInt()) % 255; // set pixel pixels[j] = (alpha << 24) | (red << 16) | (green << 8 ) | blue; } // draw new pixels g.drawImage(createImage(source), 0,0, this); // flip offscreen image to screen bufferStrategy.show(); // release offscreen image g.dispose(); } // exit device.setFullScreenWindow(null); System.exit(0); } }
Kurser inden for grundlæggende programmering