I’m having problems in adding a picture into JFrame, something is missing probebly or written wrong.
here are the classes:
main class:
public class Tester
{
public static void main(String args[])
{
BorderLayoutFrame borderLayoutFrame = new BorderLayoutFrame();
borderLayoutFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
borderLayoutFrame.setSize(600,600);
borderLayoutFrame.setVisible(true);
}
}
public class BorderLayoutFrame extends JFrame implements ActionListener
{
private JButton buttons[]; // array of buttons to hide portions
private final String names[] = { "North", "South", "East", "West", "Center" };
private BorderLayout layout; // borderlayout object
private PicPanel picture = new PicPanel();
// set up GUI and event handling
public BorderLayoutFrame()
{
super( "Philosofic Problem" );
layout = new BorderLayout( 5, 5 ); // 5 pixel gaps
setLayout( layout ); // set frame layout
buttons = new JButton[ names.length ]; // set size of array
// create JButtons and register listeners for them
for ( int count = 0; count < names.length; count++ )
{
buttons[ count ] = new JButton( names[ count ] );
buttons[ count ].addActionListener( this );
}
add( buttons[ 0 ], BorderLayout.NORTH ); // add button to north
add( buttons[ 1 ], BorderLayout.SOUTH ); // add button to south
add( buttons[ 2 ], BorderLayout.EAST ); // add button to east
add( buttons[ 3 ], BorderLayout.WEST ); // add button to west
add( picture, BorderLayout.CENTER ); // add button to center
}
// handle button events
public void actionPerformed( ActionEvent event )
{
}
}
I’v tried to add the image into the center of layout.
here is the image class:
public class PicPanel extends JPanel
{
Image img;
private int width = 0;
private int height = 0;
public PicPanel()
{
super();
img = Toolkit.getDefaultToolkit().getImage("table.jpg");
}
public void paintComponent(Graphics g)
{
super.paintComponents(g);
if ((width <= 0) || (height <= 0))
{
width = img.getWidth(this);
height = img.getHeight(this);
}
g.drawImage(img,0,0,width,height,this);
}
}
Please your help, what is the problem?
thanks
BTW: i’m using eclipse, which directory the image suppose to be in?
There’s several issues with the code you’ve posted:
getContentPane().add()instead of simplyadd()in yourBorderLayoutFrameclass.SwingUtilities.invokeLater()to launch your JFrame from the tester class. Something like this:PicPanel.PaintComponent()you callsuper.paintComponents()is the ‘s’ a typeo?In
PicPanel.PaintComponent(), you don’t need all the width/height stuff, just do this:g.drawImage(img, 0, 0, getWidth(), getHeight(), this);And avoid the call to super.paintComponent all together because you’re painting an image, why do you want the panel to paint at all?
My final implementation of your stuff: