Fullskärm på flera skärmar i java eller annat

Tråden skapades och har fått 8 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Skövde
  • 2009-09-17 21:56

Jag har skrivit en applikation i java som skall starta en fönster i fullskärm på en dator som kommer att ha flera skärmar tillkopplade. Problemet i java och swing är att de andra skärmarna blir svarta när man kör ett fönster i fullskärm på en skärm. Jag har frågat om hjälp på ett java-forum utan resulat, verkar vara något problem i java angående fullskärm och flera skärmar.
Jag skriver programmet under MacOS men tanken är att det även ska även fungera direkt under Windows och Linux så det är därför jag skriver det i java.
Någon som har några tips på hur man kan få detta att fungera på något annat sätt? Jag har funderat på att skriva fönstret som skall köras i fullskärm i QT med hjälp av QT-Jambi under java, vet dock inte hur det fungerar med fullskärm på flera skärmar under QT än. Men finns det något annat alternativ som gör det enkelt att köra fönster i fullskärm på ett flerskärmsystem? Ska dessutom kunna köras under flera operativsystem utan en massa handpåläggning.
Koden jag använder för fullskärm ser ut ungefär som nedan:

GraphicsEnvironment gEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();

GraphicsDevice gDevicePrimary = gEnvironment.getScreenDevices()[0];
gDevicePrimary.setFullScreenWindow(this.getFrame());

GraphicsDevice gDeviceSecondary = gEnvironment.getScreenDevices()[1];
gDeviceSecondary.setFullScreenWindow(frame);

Om någon har någonting som kan hjälpa så vore jag mycket tacksam. Tack på förhand!

  • Medlem
  • Skövde
  • 2009-09-20 20:32

Funderar nu på att skriva i ett annat språk för att kunna få till det.
Det viktiga är att jag kan köra ett programfönster i fullskärm i ett flerskärmsystem utan några problem. Ska alltså kunna köra ett annat program utan problem på någon av de andra skärmarna. Har haft svårt att få till detta under Java.
Det ska även vara lätt att utan en massa extra handpåläggning få det att köra under Windows och Linux.
I vilket språk och GUI toolkit är då lämpligast att använda? Vad har ni för tips?

java.net Forums : Full Screen Exclusive in two monitor ...

En "ful"-lösning med att maximera JFrame och disable min, max och close.

testa annars koden som finns på denna sida.
http://forums.sun.com/thread.jspa?forumID=57&threadID=733897

Senast redigerat 2009-09-21 16:49
  • Medlem
  • Skövde
  • 2009-09-23 17:40
Ursprungligen av grobros:

java.net Forums : Full Screen Exclusive in two monitor ...

En "ful"-lösning med att maximera JFrame och disable min, max och close.

testa annars koden som finns på denna sida.
Swing - Re: GUI needed to fill entire screen

Tack för svar!
Om jag kör enligt första sidan så blir jag ju inte av med systemlisten och dock'en.
Och om jag kör enligt andra sidan så gör det ingen skillnad mot hur jag gjorde innan, den andra skärmen blir alltså svart.

Men jag har börjat testa SWT som följder med Eclipse. Jag har dock svårt att få ett kodexempel att fungera utanför Eclipse. Kör jag nedanstående kod så får jag felmeddelandet som står under koden. Gäller när jag kör programmet från Terminalen eller från Netbeans. När jag kör det från Eclipse så verkar det dock fungera.
Någon som vet hur jag kan få det att köra utanför Eclipse?

package swttest;

import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class Main {

  public static void main(String[] args) {
    Display display = new Display();
    Shell shell = new Shell(display);
    shell.open();
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch())
        display.sleep();
    }
    display.dispose();
  }
}
2009-09-22 22:16:20.805 java[72461:d07] *** __NSAutoreleaseNoPool(): Object 0x1001591d0 of class NSView autoreleased with no pool in place - just leaking
2009-09-22 22:16:20.806 java[72461:d07] *** __NSAutoreleaseNoPool(): Object 0x101460500 of class NSCFArray autoreleased with no pool in place - just leaking
2009-09-22 22:16:20.810 java[72461:d07] *** __NSAutoreleaseNoPool(): Object 0x100115e30 of class __NSArray0 autoreleased with no pool in place - just leaking
2009-09-22 22:16:20.812 java[72461:d07] *** __NSAutoreleaseNoPool(): Object 0x10015b410 of class NSCFString autoreleased with no pool in place - just leaking
2009-09-22 22:16:20.816 java[72461:1707] *** __NSAutoreleaseNoPool(): Object 0x1001628f0 of class NSCFArray autoreleased with no pool in place - just leaking
Exception in thread "Thread-12" org.eclipse.swt.SWTException: Invalid thread access
	at org.eclipse.swt.SWT.error(Unknown Source)
	at org.eclipse.swt.SWT.error(Unknown Source)
	at org.eclipse.swt.SWT.error(Unknown Source)
	at org.eclipse.swt.widgets.Widget.error(Unknown Source)
	at org.eclipse.swt.widgets.Widget.checkWidget(Unknown Source)
	at org.eclipse.swt.widgets.Shell.isEnabled(Unknown Source)
	at org.eclipse.swt.widgets.Control.updateTrackingAreas(Unknown Source)
	at org.eclipse.swt.widgets.Display.windowProc(Unknown Source)

GTK+ är ett ganska fint toolkit när man bygger program som ska vara körbara på flera olika plattformar. En snabb titt på dokumentationen för GtkWindow visar att det verkar kunna köras i fullskärmsläge. SWT är väl annars ett av de bättre toolkiten för Java. Åtminstone på Mac OS X kan du bygga ihop en programbundle så att programmet beteer sig som ett vanligt program.

  • Medlem
  • Skövde
  • 2009-09-23 21:03
Ursprungligen av Marcus K:

GTK+ är ett ganska fint toolkit när man bygger program som ska vara körbara på flera olika plattformar. En snabb titt på dokumentationen för GtkWindow visar att det verkar kunna köras i fullskärmsläge. SWT är väl annars ett av de bättre toolkiten för Java. Åtminstone på Mac OS X kan du bygga ihop en programbundle så att programmet beteer sig som ett vanligt program.

Tack för tipset!
Har testat SWT lite mer nu. Problemet uppstår på de två Mac'ar jag har testat på, dock så fungerar det på den Windows-dator jag testat på. Så det verkar ju vara något problem med SWT på mac? Har dock endast testat under MacOS 10.6 och Java 1.6, dock både under 32-bitars och 64-bitars.
Någon annan här som kan testa ifall det fungerar för er under Mac?
Angående GTK+ så verkar det inte finnas för Windows under Java?

Om det inte är absolut nödvändigt att använda Java skulle jag i så fall använda GTK+ med någon av Perl-, Python- eller Ruby-bindningarna då de även finns för Windows och samma kod kan användas på alla plattformar. Ska du istället arbeta i C bör du använda t. ex. GLib eller liknande för att inte hålla på med direkta system- och bilioteksanrop hos respektive plattform.

Det här är förstås väldigt subjektivt men om du däremot måste använda Java är nog SWT ett av de bästa alternativen när man väl får det att fungera. Jag har bara lekt med det i Mac OS X-miljö och då fick man föra in sitt program i en programbundle för att få det att fungera bra utanför Eclipse.

  • Medlem
  • Skövde
  • 2009-09-25 11:28
Ursprungligen av Marcus K:

Om det inte är absolut nödvändigt att använda Java skulle jag i så fall använda GTK+ med någon av Perl-, Python- eller Ruby-bindningarna då de även finns för Windows och samma kod kan användas på alla plattformar. Ska du istället arbeta i C bör du använda t. ex. GLib eller liknande för att inte hålla på med direkta system- och bilioteksanrop hos respektive plattform.

Det här är förstås väldigt subjektivt men om du däremot måste använda Java är nog SWT ett av de bästa alternativen när man väl får det att fungera. Jag har bara lekt med det i Mac OS X-miljö och då fick man föra in sitt program i en programbundle för att få det att fungera bra utanför Eclipse.

Problemet är att programmet jag har redan är skrivet i Java, hade bara problem med fullskärm i Swing. Så om jag kunde få SWT att fungera så vore det suveränt. Att skriva om programmet i C++ eller något annat är bara en sista utväg.
Har du någon mer info om hur du gjorde för att få det att fungera utanför Eclipse? Programbundle?

  • Medlem
  • Skövde
  • 2009-10-03 13:36

Nu har jag till slut löst det. Var tydligen inte bara jag som hade problem.
Info finns här: Chuck: How to run SWT apps on a Mac

1
Bevaka tråden