Ich habs ma ganz am Ende probiert, aber dann gings, nur das ist nicht was ich gesucht habe
einen richtigen Full Screen Mode, ohne oder die Leiste, mit X zum Schließen und so...
Nö, geht auch nicht, könntest du mir vielleicht mit Hilfe des oben angegebenen Tutorials weiterhelfen, das kenn ich zwar habs mir auch ma angeguckt schon öfters, aber die Typen von Sun Systems waren ja so schlau, und haben nicht in ihren beispiel quellcodes ganz einfach ein Frame gemacht, das im Full Screen ist, nein die haben es so voll gepackt dass ich gar nicht weiß wie das gehen soll
Mein Programm ist gerade etwas gewachsen Oli, also, wenn ich es nun mache wie du:
Code:
package Bonus_Game_1;
import javax.media.j3d.Group;
import javax.swing.*;
import java.applet.Applet;
import java.applet.AudioClip;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.MalformedURLException;
import java.net.URL;
public class Main_1 extends JFrame
{
public Main_1(String args[])
{
super("3D Maze");
String fnm = null;
if (args.length == 1)
fnm = args[0];
else if (args.length == 0)
fnm = "F:/images/maze.txt";
else {
System.out.println( "Usage: java Maze3D <fileName>");
System.exit(0);
}
MazeManager mm = new MazeManager(fnm);
BirdsEye be = new BirdsEye(mm);
SecondViewPanel secondVP = new SecondViewPanel(mm);
WrapMaze3D w3d = new WrapMaze3D(mm, be, secondVP.getCamera2TG() );
Container c = getContentPane();
c.setLayout( new BoxLayout(c, BoxLayout.X_AXIS) );
c.add(w3d); // main camera pane
c.add( Box.createRigidArea( new Dimension(60,0)) );
Box vertBox = Box.createVerticalBox();
vertBox.add( secondVP );
vertBox.add( Box.createRigidArea( new Dimension(0,8)) );
vertBox.add(be);
c.add(vertBox);
setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
pack();
setResizable(true);
setVisible(true);
setUndecorated(true);
Dimension screenDim = Toolkit.getDefaultToolkit().getScreenSize();
setSize(screenDim);
}
public static void main(String[] args)
{ new Main_1(args); URL url = null;
try {
url = new URL("file:///F:/FUTURE.SYSTEMS/Rayman_Sounds/Water.wav" +
"");
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
AudioClip clip = Applet.newAudioClip(url);
clip.loop();
warte(2000);
}
public static void warte(long millis){
try{
Thread.sleep(millis);
}
catch(InterruptedException e){}
}
}
Dann kommt folgende Fehler Meldung
Code:
Exception in thread "main" java.awt.IllegalComponentStateException: The frame is displayable.
at java.awt.Frame.setUndecorated(Unknown Source)
at Bonus_Game_1.Main_1.<init>(Main_1.java:54)
at Bonus_Game_1.Main_1.main(Main_1.java:62)
Wie gesagt, hast du dir mein neues Programm überhaupt angesehen, du musst das mit pack vielleicht nicht machen und das funktioniert auch bei mir, nur nicht in dieser Klasse, hättest du ne Idee was ich sonst noch machen könnte, ich stells mal vor pack warte... geht jetzt mit dieser Lösung
Code:
package Bonus_Game_1;
import javax.media.j3d.Group;
import javax.swing.*;
import java.applet.Applet;
import java.applet.AudioClip;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.MalformedURLException;
import java.net.URL;
public class Main_1 extends JFrame
{
public Main_1(String args[])
{
super("3D Maze");
setUndecorated(true);
setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
Dimension screenDim = Toolkit.getDefaultToolkit().getScreenSize();
setSize(screenDim);
setVisible(true);
String fnm = null;
if (args.length == 1)
fnm = args[0];
else if (args.length == 0)
fnm = "F:/images/maze.txt";
else {
System.out.println( "Usage: java Maze3D <fileName>");
System.exit(0);
}
MazeManager mm = new MazeManager(fnm);
BirdsEye be = new BirdsEye(mm);
SecondViewPanel secondVP = new SecondViewPanel(mm);
WrapMaze3D w3d = new WrapMaze3D(mm, be, secondVP.getCamera2TG() );
Container c = getContentPane();
c.setLayout( new BoxLayout(c, BoxLayout.X_AXIS) );
c.add(w3d); // main camera pane
c.add( Box.createRigidArea( new Dimension(60,0)) );
Box vertBox = Box.createVerticalBox();
vertBox.add( secondVP );
vertBox.add( Box.createRigidArea( new Dimension(0,8)) );
vertBox.add(be);
c.add(vertBox);
pack();
}
public static void main(String[] args)
{ new Main_1(args); URL url = null;
try {
url = new URL("file:///F:/FUTURE.SYSTEMS/Rayman_Sounds/Water.wav" +
"");
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
AudioClip clip = Applet.newAudioClip(url);
clip.loop();
warte(2000);
}
public static void warte(long millis){
try{
Thread.sleep(millis);
}
catch(InterruptedException e){}
}
}
Aber dadurch ist nur der Rahmen weg, fullscreen ist es immer noch nicht
Oli, pack(); kann man nicht weglassen, aber ich kann dir die Klassen schicken, die heißen nur anders, und die benutzen Java3D ich weiß nicht ob du das hast, wenn nicht kannst, du es unter folgendem Link downloaden
Package von diesem Main_1: http://fivedots.coe.psu.ac.th/~ad/jg/ch16/index.html
einfach auf Download zipped source code
und Java3D: http://java.sun.com/javase/technologies/desktop/java3d/
Unten einfach auf Java3D Api 1.5 und dann auf Download JAva3D...Implements Documentation
Ich dachte, der OP wollte keine Startleiste; also Fullscreen Exclusive.
Egal ob er das nun wollte, so gehts:
Code:
final GraphicsEnvironment gEnv =
GraphicsEnvironment.getLocalGraphicsEnvironment();
final GraphicsDevice[] devices = gEnv.getScreenDevices();
if (devices.length > 0) {
final JTextPane pane = new JTextPane();
pane.setContentType("text/html");
pane.setText("<html><body><h1>Full Screen</h1></body></html>");
final JPanel contentPane = new JPanel(new BorderLayout());
contentPane.add(pane);
final JFrame f = new JFrame("Full Screen Text Pane");
f.setUndecorated(true);
f.setContentPane(contentPane);
f.pack();
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
f.setVisible(true);
devices[0].setFullScreenWindow(f);
}
Hab jetzt die Antworten nicht alle verfolgt, vielleicht bin ich spät dran. Aber mit folgender Funktion kann man zwischen Fullscreen/normal wechseln. Will man nur Fullscreen, die Methode entsprechend vor dem pack(); setVisible(true); aufrufen (glaub ich).
In der Variablendeklaration:
Code:
/**
* This variable gets the graphic device and ist needed for full-screen-functionality. see
* {@link #viewFullScreen() viewFullScreen()} for more details.
*/
GraphicsDevice graphicdevice = java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
// reference to current frame, needed for fullscreen-option
JFrame mainframe;
Im Konstruktor:
Code:
// reference needed for fullscreen
mainframe = this;
Und irgendwo:
Code:
@Action
public void viewFullScreen() {
// check whether fullscreen is possible or not...
if (graphicdevice.isFullScreenSupported()) {
// if we already have a fullscreen window, quit fullscreen
if (graphicdevice.getFullScreenWindow()!=null) quitFullScreen();
// else show fullscreen window
else showFullScreen();
}
}
private void showFullScreen() {
// check whether fullscreen is supported, and if we currently have a fullscreen-window
if (graphicdevice.isFullScreenSupported() && null==graphicdevice.getFullScreenWindow()) {
// dispose frame, so we can remove the decoration when setting full screen mode
mainframe.dispose();
// hide menubar
jMenuBarDesktop.setVisible(false);
// set frame non-resizable
mainframe.setResizable(false);
try {
// remove decoration
mainframe.setUndecorated(true);
}
catch (IllegalComponentStateException e) {
e.printStackTrace();
}
// show frame again
mainframe.setVisible(true);
// set fullscreen mode to this window
graphicdevice.setFullScreenWindow(this);
}
}
private void quitFullScreen() {
// check whether fullscreen is supported, and if we currently have a fullscreen-window
if (graphicdevice.isFullScreenSupported() && graphicdevice.getFullScreenWindow()!=null) {
// disable fullscreen-mode
graphicdevice.setFullScreenWindow(null);
// hide menubar
jMenuBarDesktop.setVisible(true);
// make frame resizable again
mainframe.setResizable(true);
// dispose frame, so we can restore the decoration
mainframe.dispose();
try {
// set decoration
mainframe.setUndecorated(false);
}
catch (IllegalComponentStateException e) {
e.printStackTrace();
}
// show frame again
mainframe.setVisible(true);
}
}