Hi Marco
Ich habe mal ein bisschen mit Swogl rumgespielt, und dabei ist mir folgendes aufgefallen: Wenn man einen SwoglContainer von einem Window in ein anderes schiebt, gehen alle Texturen verloren. Unten ist ein Program, welches bei mir den Fehler immer reproduzieren kann (einfach auf den einsamen JButton klicken…).
Getestet mit Java 1.6, Ubuntu 64 bit, LWJGL
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import de.javagl.swogl.SwoglApplication;
import de.javagl.swogl.SwoglApplications;
import de.javagl.swogl.SwoglContainer;
import de.javagl.swogl.samples.SwoglDemoComponents;
public class EmptySwoglTest {
public static void main( String[] args ){
final JFrame frameA = new JFrame("A");
final JFrame frameB = new JFrame("B");
frameA.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frameB.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frameA.setBounds( 20, 20, 400, 320 );
frameB.setBounds( 20, 340, 400, 300 );
JButton action = new JButton( "click me" );
final Component panel = createSwoglPanel();
frameA.add( panel, BorderLayout.CENTER );
frameA.add( action, BorderLayout.NORTH );
action.addActionListener( new ActionListener(){
private boolean state = true;
@Override
public void actionPerformed( ActionEvent e ){
if( state ){
frameB.add( panel, BorderLayout.CENTER );
}
else{
frameA.add( panel, BorderLayout.CENTER );
}
state = !state;
}
});
frameA.setVisible( true );
frameB.setVisible( true );
}
private static Component createSwoglPanel(){
JPanel panel = new JPanel( new BorderLayout() );
SwoglApplication swoglApplication = SwoglApplications.createSwoglApplication();
SwoglContainer swoglContainer = SwoglContainer.create( swoglApplication );
Component mainComponent = swoglContainer.getMainComponent();
panel.add( mainComponent, BorderLayout.CENTER );
// Create the SwoglComponents for this sample and adds them to the
// SwoglContainer
swoglContainer.add( SwoglDemoComponents.createSwoglLogoComponent() );
swoglContainer.add( SwoglDemoComponents.createTableComponent() );
swoglContainer.add( SwoglDemoComponents.createTextComponent() );
swoglContainer.add( SwoglDemoComponents.createSplitPaneComponent() );
swoglContainer.add( SwoglDemoComponents.createTreeComponent() );
return panel;
}
}