bonjour,
suis debutante en java et j'ai deux problemes:
1)le premier est que j'ai creer une jframe avec un borderLayout : mais a chaque fois que je cree un jpanel et que je veux l'ajouter pas de probleme tant que c'est le premier placé, mais des que j'en cree un autre et que je veux ajouter a une autre zone de mon borderLayout (en precisant bien la zone où je veux le placer ) ll va quand meme se mettre au centre(enfin c est ce que je crois) et du coup je ne vois plus le premier. J'ai lontemps lu la doc pour voir comment le faire ca ne marchep pas.
2)mon deuxieme probleme est que dans un de mes panels je dois stocker une image sur laquelle je dois faire une selection rectangle avec le curseur, j'arrive bien a selection mais une fois que je lache ma souris le rectangle disparait.
je n'ai aucune de comment faire.
voici mon code , suis en retard sur mon projet merci d'avance pour votre aide
// c'est la classe de ma Frame:
package GeographicMap;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Panel;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.Border;
public class MappemondeFrame extends JFrame{
public MappemondeFrame(){
setTitle("Mappemonde");
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
java.awt.Container c = getContentPane();
c.add(makeLabel(" "),BorderLayout.NORTH);
c.add(makeLabel(" "),BorderLayout.SOUTH);
c.add(makeLabel(" "),BorderLayout.EAST);
c.add(makeLabel(" "),BorderLayout.WEST);
c.add(makeLabel(" "),BorderLayout.CENTER);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private JLabel makeLabel(String text)
{
JLabel label = new JLabel(text,JLabel.CENTER);
Border borderLine = BorderFactory.createLineBorder(Color.BLACK);
label.setBorder(borderLine);
return label;
}
static final int DEFAULT_WIDTH =600;
static final int DEFAULT_HEIGHT =600;
public static void main(String[] args){
JFrame f = new MappemondeFrame();
/*JPanel p= new JPanel();
/ p.setLayout(new BorderLayout());
/ p.add( new JPanelImageBg("C:/Documents and Settings/massamba/workspace/mappemonde.jpg"), BorderLayout.CENTER);
f.add(p);*/
JPanel j= new JPanel();
j.setLayout(new BorderLayout());
j.add( new JPanelBoutons(), BorderLayout.NORTH);
f.add(j);
Component c = new JPanelImageBg("C:/Documents and Settings/massamba/workspace/mappemonde.jpg");
f.add(c);
JPanel d = new DrawingFrame();
d.setLayout(new BorderLayout());
d.add( new DrawingFrame(), BorderLayout.SOUTH);
f.add(d);
f.setVisible(true);
}
}
// voici celle de mon curseur qui selection a l'aide d'un petit rectangle
package GeographicMap;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
public class DrawingFrame extends JPanel implements ActionListener {
Point p1 = null;
Point p2 = null;
boolean zoom_to_rect = false;
public DrawingFrame()
{
setLayout(new BorderLayout());
JPanel btnPanel = new JPanel();
btnPanel.setBackground(Color.GREEN);
add("South", btnPanel);
addMouseListener(new MouseAdapter()
{
public void mousePressed(MouseEvent e)
{
setCursor( new Cursor(Cursor.CROSSHAIR_CURSOR));
p1 = new Point(e.getPoint());
p2 = new Point(e.getPoint());
}
public void mouseReleased(MouseEvent e)
{
setCursor( Cursor.getDefaultCursor() );
p1 = new Point(e.getPoint());
p2 = new Point(e.getPoint());
repaint();
}
});
addMouseMotionListener(new MouseMotionAdapter()
{
public void mouseDragged(MouseEvent e)
{
Rectangle r = new Rectangle( p1.x, p1.y, p2.x-p1.x+1, p2.y-p1.y+1 );
p2 = new Point(e.getPoint());
Rectangle r1 = new Rectangle( p1.x, p1.y, p2.x-p1.x+1, p2.y-p1.y+1 );
r = r.union( r1 );
repaint( r.x, r.y, r.width, r.height );
zoom_to_rect = true;
}
});
}
public void paintComponent(Graphics g)
{
if(zoom_to_rect)
{
Rectangle r = g.getClipBounds();
if( r!=null )
{
Color save_c = g.getColor();
g.setColor( this.getBackground() );
g.fillRect( r.x, r.y, r.width, r.height );
g.setColor( save_c );
g.drawLine( p1.x, p1.y, p2.x, p1.y );
g.drawLine( p2.x, p1.y, p2.x, p2.y );
g.drawLine( p2.x, p2.y, p1.x, p2.y );
g.drawLine( p1.x, p2.y, p1.x, p1.y );
}
}
else
{
}
}
public void actionPerformed(ActionEvent a)
{
}
public static void main (String[] args)
{
JFrame f = new JFrame();
f.setContentPane(new DrawingFrame());
f.setBounds(10,10,500,400);
f.setVisible(true);
}
}
Partager