Question

I Designed JApplet class manually and I designed main class by using Netbean Builder which generate the code automatically by default the class will be extends JFrame. so how can I run the JApplet class from JFrame .
this JApplet code
the problem now is buttons does not appear
Updated

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import javax.swing.ImageIcon;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;

public class GalaxyTable2 extends JFrame{ //JApplet

    private static final int PREF_W = 700;
    private static final int PREF_H = 600;
    String[] columnNames
                    = {"Phone Name", "Brief Description", "Picture", "price",
                        "Buy"};

// Create image icons
    ImageIcon Image1 = new ImageIcon(
                    getClass().getResource("s1.png"));
    ImageIcon Image2 = new ImageIcon(
                    getClass().getResource("s2.png"));
    ImageIcon Image3 = new ImageIcon(
                    getClass().getResource("s3.png"));
    ImageIcon Image4 = new ImageIcon(
                    getClass().getResource("s4.png"));
    ImageIcon Image5 = new ImageIcon(
                    getClass().getResource("note.png"));
    ImageIcon Image6 = new ImageIcon(
                    getClass().getResource("note2.png"));
    ImageIcon Image7 = new ImageIcon(
                    getClass().getResource("note3.png"));

    Object[][] rowData = {
        {"Galaxy S", "3G Support,CPU 1GHz",
            Image1, 120, false},
        {"Galaxy S II", "3G Support,CPU 1.2GHz",
            Image2, 170, false},
        {"Galaxy S III", "3G Support,CPU 1.4GHz",
            Image3, 205, false},
        {"Galaxy S4", "4G Support,CPU 1.6GHz",
            Image4, 230, false},
        {"Galaxy Note", "4G Support,CPU 1.4GHz",
            Image5, 190, false},
        {"Galaxy Note2 II", "4G Support,CPU 1.6GHz",
            Image6, 190, false},
        {"Galaxy Note 3", "4G Support,CPU 2.3GHz",
            Image7, 260, false},};

    MyTable ss = new MyTable(
                    rowData, columnNames);

    // Create a table
    JTable jTable1 = new JTable(ss);

    public GalaxyTable2() {
    jTable1.setRowHeight(70);

    add(new JScrollPane(jTable1),
   BorderLayout.CENTER);
   JFrame f = new JFrame();

   this.setTitle("Galaxy Phones");
   JButton button = new JButton("Home");
  button.setSize(new Dimension(200, 500));
  button.setLocation(400, 500);
  f.getContentPane().add(button);
  JButton button2 = new JButton("Confirm");
  button2.setSize(new Dimension(100, 500));
  button2.setLocation(100, 300);
  // button2.addActionListener(null);
  f.getContentPane().add(button2);
  f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

   this.setSize(800, 700);
  this.setLocation(300, 0);
  }
    @Override

    public Dimension getPreferredSize() {
        return new Dimension(PREF_W, PREF_H);
    }

    public void actionPerformed(ActionEvent e) {
        new AMainFrame7().setVisible(true);
    }

    public static void main(String[] args) {

         GalaxyTable2 b=new GalaxyTable2();
        /*
        JFrame f = new JFrame();

        JButton button = new JButton("Home");
        button.setSize(new Dimension(100, 50));
        button.setLocation(400, 500);
        f.getContentPane().add(button);
        JButton button2 = new JButton("Confirm");
        button2.setSize(new Dimension(100, 50));
        button2.setLocation(200, 500);
        button2.addActionListener(null);
        f.getContentPane().add(button2);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setTitle("Galaxy Phones");
        f.setSize(500, 500);
        f.getContentPane().add(f, button2);
        applet.init();
        applet.start();*/
        b.pack();

        Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
        b.setLocation((d.width - b.getSize().width) / 2,
                        (d.height - b.getSize().height) / 2);
        b.setVisible(true);

    }
}

and this action code in main class

private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {                                         
new GalaxyTable().setVisible(true); 
dispose();
 }   
Was it helpful?

Solution

First of all, Applets are designed to be run from within the context of a browser (or applet viewer), they're not really designed to be added into other containers.

Technically, you can add a applet to a frame like any other component, but personally, I wouldn't. The applet is expecting a lot more information to be available to it in order to allow it to work fully.

Instead, I would move all of the "application" content to a separate component, like a JPanel for example and simply move this between the applet or frame as required...

ps- You can use f.setLocationRelativeTo(null) to center the window on the screen ;)

Updated

You need to go back to basics. Unless you absolutely must have one, avoid applets until you understand the basics of Swing, case in point...

Within the constructor of GalzyTable2 you are doing...

JApplet app = new JApplet();
add(app);
app.init();
app.start();

...Why are you adding another applet to an applet??

Case in point...

Within the main method, you are trying to add the instance of JFrame to itself...

f.getContentPane().add(f, button2);

Instead, create yourself a class that extends from something like JPanel, add your UI logical to this, using compound components if required.

Then, add this panel to whatever top level container you need.

Take the time to read through Creating a GUI with Swing

Updated with example

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class GalaxyTable2 extends JPanel {

    private static final int PREF_W = 700;
    private static final int PREF_H = 600;

    String[] columnNames
                    = {"Phone Name", "Brief Description", "Picture", "price",
                        "Buy"};

// Create image icons
    ImageIcon Image1 = new ImageIcon(
                    getClass().getResource("s1.png"));
    ImageIcon Image2 = new ImageIcon(
                    getClass().getResource("s2.png"));
    ImageIcon Image3 = new ImageIcon(
                    getClass().getResource("s3.png"));
    ImageIcon Image4 = new ImageIcon(
                    getClass().getResource("s4.png"));
    ImageIcon Image5 = new ImageIcon(
                    getClass().getResource("note.png"));
    ImageIcon Image6 = new ImageIcon(
                    getClass().getResource("note2.png"));
    ImageIcon Image7 = new ImageIcon(
                    getClass().getResource("note3.png"));

    Object[][] rowData = {
        {"Galaxy S", "3G Support,CPU 1GHz",
            Image1, 120, false},
        {"Galaxy S II", "3G Support,CPU 1.2GHz",
            Image2, 170, false},
        {"Galaxy S III", "3G Support,CPU 1.4GHz",
            Image3, 205, false},
        {"Galaxy S4", "4G Support,CPU 1.6GHz",
            Image4, 230, false},
        {"Galaxy Note", "4G Support,CPU 1.4GHz",
            Image5, 190, false},
        {"Galaxy Note2 II", "4G Support,CPU 1.6GHz",
            Image6, 190, false},
        {"Galaxy Note 3", "4G Support,CPU 2.3GHz",
            Image7, 260, false},};

    MyTable ss = new MyTable(
                    rowData, columnNames);

    // Create a table
    JTable jTable1 = new JTable(ss);

    public GalaxyTable2() {
        jTable1.setRowHeight(70);

        add(new JScrollPane(jTable1),
                        BorderLayout.CENTER);

        JPanel buttons = new JPanel();

        JButton button = new JButton("Home");
        buttons.add(button);
        JButton button2 = new JButton("Confirm");
        buttons.add(button2);

        add(buttons, BorderLayout.SOUTH);
    }

    @Override

    public Dimension getPreferredSize() {
        return new Dimension(PREF_W, PREF_H);
    }

    public void actionPerformed(ActionEvent e) {
        new AMainFrame7().setVisible(true);
    }

    public static void main(String[] args) {

        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                    ex.printStackTrace();
                }

                JFrame frame = new JFrame("Testing");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.add(new GalaxyTable2());
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }
}

You also seem to have a lack of understanding about how to use layout managers.

Take the time to read through Creating a GUI with Swing and Laying components out in a container

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top