Avatar billede agony2 Nybegynder
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.
Avatar billede pathetic Nybegynder
19. juni 2002 - 00:27 #1
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);
       
    }
}
Avatar billede agony2 Nybegynder
19. juni 2002 - 08:47 #2
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.
Avatar billede pathetic Nybegynder
19. juni 2002 - 10:01 #3
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.
Avatar billede agony2 Nybegynder
19. juni 2002 - 10:18 #4
har du testet dette hos dig ?
Avatar billede pathetic Nybegynder
19. juni 2002 - 14:07 #5
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!
Avatar billede cyberzed Nybegynder
20. juni 2002 - 02:00 #6
Hvorfor lave det så besværligt læs dog den tutorial der er til FullScreen under Java 1.4.0
Avatar billede agony Nybegynder
20. juni 2002 - 08:38 #7
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 :-|
Avatar billede cyberzed Nybegynder
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 :)
Avatar billede oleoldhoj Nybegynder
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);
  }
}
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester