The only component I know about this is Dragable and resizeable, it is an InternalFrame on JDesktop. here is an example:
import swing._ import event._ import javax.swing.{UIManager,JComponent} import javax.swing.KeyStroke.getKeyStroke import java.awt.{Graphics2D,Graphics} object InternalFrameDemo extends SimpleSwingApplication{ UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName) val top = new MainFrame{ title = "InternalFrameDemo" preferredSize = new Dimension(640,480) val desktop = new javax.swing.JDesktopPane val jc = new JComponent{ override def paint(g:Graphics){ import g._ drawLine(0,0,20,20) drawLine(0,20,20,0) println("yay draw") } setVisible(true) } desktop add jc contents = Component.wrap(desktop) menuBar = new MenuBar{ contents += new Menu("Document"){ mnemonic = Key.D contents += new MenuItem("New"){ mnemonic = Key.N action = new Action("new"){ def apply = createFrame accelerator = Some(getKeyStroke("alt N")) } } contents += new MenuItem("Quit"){ mnemonic = Key.Q action = new Action("quit"){ def apply(){ quit() } accelerator = Some(getKeyStroke("alt Q")) } } } } def createFrame{ val newFrame = MyInternalFrame() newFrame setVisible true desktop add newFrame newFrame setSelected true } } } import javax.swing.{JDesktopPane,JInternalFrame} import collection.mutable.ArrayBuffer object MyInternalFrame{ var openFrameCount = 0; val xOffset, yOffset = 30; def apply() = { openFrameCount += 1 val jframe = new javax.swing.JInternalFrame("Document #" + openFrameCount,true,true,true,true) jframe.setSize(300,300) jframe.setLocation(xOffset*openFrameCount,yOffset*openFrameCount) jframe
but both JInternalFrame and JDesktop are not integrated into the scala swing package and must be wrapped manually.
source share