I would like to create my graphical representation to create a JPanel, and then use the JPanel as I wish, either in a JApplet or in a JFrame. For instance,
import java.awt.*; import javax.swing.*; public class MyPanel extends JPanel { private static final Dimension PREF_SIZE = new Dimension(400, 300); @Override protected void paintComponent(Graphics g) { super.paintComponent(g); g.drawString("hi", 50, 50); } @Override public Dimension getPreferredSize() { return PREF_SIZE; } public JMenuBar methodThatReturnsJMenuBar() { JMenu menu = new JMenu("Menu"); JMenuBar menuBar = new JMenuBar(); menuBar.add(menu); return menuBar; } }
Then for use in the applet:
import javax.swing.JApplet; public class MyApplet extends JApplet { public void init() { try { javax.swing.SwingUtilities.invokeAndWait(new Runnable() { public void run() { createGUI(); } }); } catch (Exception e) { System.err.println("createGUI didn't successfully complete"); } } private void createGUI() { getContentPane().add(new MyPanel()); } }
Or in a JFrame:
import javax.swing.JFrame; public class MyStandAlone { private static void createAndShowUI() { MyPanel myPanel = new MyPanel(); JFrame frame = new JFrame("MyPanel"); frame.getContentPane().add(myPanel); frame.setJMenuBar(myPanel.methodThatReturnsJMenuBar()); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } public static void main(String[] args) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { createAndShowUI(); } }); } }
source share