Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme fenetre barre au dessu

(interface graphique)

    19 janvier 2011 à 14:38:54

    Pouvez vous me dire pourquoi j'ai une barre grise qui apparaît entre le titre et le jpanel..
    Voici le code de ma fenêtre et une image de mon problème Image utilisateur :


    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.ItemEvent;
    import java.awt.event.ItemListener;
    import java.awt.event.KeyEvent;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.awt.image.BufferedImage;
    import java.awt.image.RenderedImage;
    import java.io.File;

    import javax.imageio.ImageIO;
    import javax.swing.*;


    public class Fenetre extends JFrame{

    JPanel principale=new JPanel();
    JPanel secondaire=new JPanel();
    private FigureColoree fc ;
    private DessinFigures df=new DessinFigures();
    private JMenuBar menuBar = new JMenuBar();
    private JMenu fichier = new JMenu("Fichier"),
    edition = new JMenu("Edition"),
    nfigure = new JMenu("Nouvelles figures");

    private JButton but=new JButton(new ImageIcon("images/gomme.gif"));
    private JButton rect=new JButton(new ImageIcon("images/rect.gif"));
    private JButton rondic=new JButton(new ImageIcon("images/rond.gif"));
    private JButton trian=new JButton(new ImageIcon("images/triangle.gif"));
    private JButton quadri=new JButton(new ImageIcon("images/quadri.gif"));
    private JButton sauv=new JButton(new ImageIcon("images/sauver.gif"));
    private JButton trac=new JButton(new ImageIcon("images/trac.png"));
    private JButton texte=new JButton(new ImageIcon("images/t.png"));
    private JButton coul=new JButton(new ImageIcon("images/couleur.gif"));

    private JMenuItem nouveau = new JMenuItem("Effacer"),
    sauver = new JMenuItem("Sauvegarder"),
    quitter = new JMenuItem("Quitter"),
    supp = new JMenuItem("Supression"),
    rec = new JMenuItem("Rectangle"),
    tri = new JMenuItem("Triangle"),
    quad = new JMenuItem("QuadrilatËre"),
    rd = new JMenuItem("Rond");


    private JToolBar toolBar = new JToolBar();
    private JTextField zt = new JTextField(" ");
    private JTextArea jta;
    private Color col=Color.BLACK;
    private String mot;
    private String ecriture;
    private Graphics g;
    private UnPoint x,y;
    private JTextField jtf;
    private JCheckBox depla = new JCheckBox("Deplacement");
    private int i=0;
    private JButton test = new JButton("test");



    public Fenetre(){
    principale.setLayout(new BorderLayout());
    secondaire.setLayout(new BorderLayout());
    principale.add(secondaire,BorderLayout.NORTH);
    principale.add(df,BorderLayout.CENTER);
    Font fonte = new Font("TimesRoman", Font.PLAIN, 20);
    zt.setFont(fonte);
    this.setTitle("Paint");
    this.setSize(700,500);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setLocationRelativeTo(null);
    this.initMenu();
    this.initTb();
    df.setLayout(new BorderLayout());
    df.add(zt,BorderLayout.SOUTH);
    this.setContentPane(principale);
    this.setVisible(true);
    zt.setOpaque(false);
    zt.setBorder(null);

    }

    private void initTb() {
    sauv.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e) {
    df.suppListener();
    JFileChooser chooser = new JFileChooser();
    if(chooser.showSaveDialog(null) == JFileChooser.APPROVE_OPTION){
    df.sauvegarder(chooser.getSelectedFile());
    }
    }
    });
    trian.addActionListener(new FormeListener());
    rondic.addActionListener(new FormeListener());
    quadri.addActionListener(new FormeListener());
    rect.addActionListener(new FormeListener());
    but.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent arg0) {
    if(df.getSel()>=0){
    try{
    df.figures.remove(df.getSel());
    }catch(Exception e){
    df.figures.remove(df.getSel()-1);
    df.setSel(-1);
    }
    try{
    df.setSel(df.getSel()-1);
    df.figures.get(df.getSel()).selectionne();
    }catch(Exception e){
    ;
    }
    df.repaint();
    }
    }
    });
    trac.addActionListener(new FormeListener());
    coul.addActionListener(new ColorListener());
    texte.addActionListener(new TexteListener());
    test.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e) {
    df.activeManipulationSouris();
    }
    });

    depla.addActionListener(new ActionListener(){

    @Override
    public void actionPerformed(ActionEvent e) {
    if(depla.isSelected())
    df.activeManipulationSouris();
    else
    df.suppListener();
    }

    });

    toolBar.add(sauv);
    toolBar.addSeparator();
    toolBar.add(but);
    toolBar.addSeparator();
    toolBar.add(trac);
    toolBar.add(rect);
    toolBar.add(rondic);
    toolBar.add(trian);
    toolBar.add(quadri);
    toolBar.add(texte);
    toolBar.addSeparator();
    toolBar.add(coul);
    toolBar.addSeparator();
    toolBar.add(depla);

    secondaire.add(toolBar,BorderLayout.CENTER);
    }

    private void initMenu() {


    quitter.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent arg0) {
    System.exit(0);
    }
    });
    quitter.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q,KeyEvent.CTRL_MASK));

    nouveau.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent arg0){
    df.suppListener();
    df.figures.clear();
    df.setSel(0);
    zt.setText("Nouveau panneau");
    repaint();
    }
    });
    nouveau.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,KeyEvent.CTRL_MASK));


    fichier.add(nouveau);
    fichier.addSeparator();
    fichier.add(sauver);
    fichier.addSeparator();
    fichier.add(quitter);

    edition.add(supp);
    supp.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent arg0) {
    if(df.getSel()>=0){
    try{
    df.figures.remove(df.getSel());
    }catch(Exception e){
    df.figures.remove(df.getSel()-1);
    df.setSel(-1);
    }
    try{
    df.setSel(df.getSel()-1);
    df.figures.get(df.getSel()).selectionne();
    }catch(Exception e){
    ;
    }
    df.repaint();
    }
    }
    });
    supp.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE,KeyEvent.CTRL_MASK));
    edition.addSeparator();
    nfigure.add(rd);
    rd.addActionListener(new FormeListener());
    nfigure.add(rec);
    rec.addActionListener(new FormeListener());
    nfigure.add(quad);
    quad.addActionListener(new FormeListener());
    nfigure.add(tri);
    tri.addActionListener(new FormeListener());
    edition.add(nfigure);


    menuBar.add(fichier);
    menuBar.add(edition);


    setJMenuBar(menuBar);
    secondaire.add(menuBar,BorderLayout.NORTH);
    }

    class FormeListener implements ActionListener{
    public void actionPerformed(ActionEvent e) {
    df.suppListener();
    boolean bool=false;
    if((e.getSource().equals(rondic))||(e.getSource().equals(rd))){
    fc=new UnCercle();
    zt.setText("Cliquer sur les 2 points qui definisses le cercle");
    bool=true;
    }
    else if((e.getSource().equals(trian))||(e.getSource().equals(tri))){
    fc=new UnTriangle();
    zt.setText("cliquer sur les 3 points qui definisses le triangle");
    bool=true;
    }
    else if((e.getSource().equals(quadri))||(e.getSource().equals(quad))){
    fc=new UnQuadrilatere();
    zt.setText("Cliquer sur les 4 points qui definisses le quadrilatËre");
    bool=true;
    }
    else if((e.getSource().equals(rect))||(e.getSource().equals(rec))){
    fc=new UnRectangle();
    zt.setText("cliquer sur les 2 points qui definissent le rectangle");
    bool=true;
    }
    else if(e.getSource().equals(trac)){
    df.trace(col);
    }
    if(bool)
    df.construit(fc);
    if(depla.isSelected()){
    df.activeManipulationSouris();
    }
    }

    }

    class ColorListener implements ActionListener{

    public void actionPerformed(ActionEvent e) {
    col=JColorChooser.showDialog(null,"Selection couleur",col);
    try{
    df.figureSelection().setColor(col);
    }catch(Exception exc){
    ;
    }
    repaint();
    }
    }

    class ColorListener2 implements ActionListener{

    JPanel textpanel;
    public void actionPerformed(ActionEvent e) {
    col=JColorChooser.showDialog(null,"Selection couleur",col);
    }
    }

    class TexteListener implements ActionListener {

    public void actionPerformed(ActionEvent e) {
    df.suppListener();
    zt.setText("Cliquer sur les deux points qui definissent la zone rectangulaire");
    addMouseListener(new MouseListener(){

    @Override
    public void mouseClicked(MouseEvent arg0) {
    // TODO Auto-generated method stub

    }

    @Override
    public void mouseEntered(MouseEvent arg0) {
    // TODO Auto-generated method stub

    }

    @Override
    public void mouseExited(MouseEvent arg0) {
    // TODO Auto-generated method stub

    }

    @Override
    public void mousePressed(MouseEvent e) {
    // TODO Auto-generated method stub
    x=new UnPoint();
    y=new UnPoint();
    if(i==0){
    x.setX(e.getX());
    x.setY(e.getY());
    i++;
    }else{
    y.setX(e.getX());
    y.setY(e.getY());
    i=0;
    saisieTexte st=new saisieTexte();
    }

    }

    @Override
    public void mouseReleased(MouseEvent arg0) {
    // TODO Auto-generated method stub

    }

    });

    }
    }


    public class saisieTexte extends JPanel{
    JDialog d;
    JMenuBar jb = new JMenuBar();
    private JButton bcoul;
    final JCheckBox ital;
    final JCheckBox gras ;
    public saisieTexte(){
    zt.setText("Choisissez vos preferences , cliquez sur 'ok' et quittez la fenetre");
    d=new JDialog();
    d.setModal(true);
    d.setSize(400, 400);
    d.setTitle("Texte");
    this.setLayout(new BorderLayout());
    final JComboBox cb = new JComboBox(new String[]{"Times New Roman","Arial","Serif","Dialog"});
    cb.addItemListener(new ItemListener(){
    public void itemStateChanged(ItemEvent e){
    switch(cb.getSelectedIndex()){
    case 0:
    ecriture = "TimesRoman";
    break;
    case 1:
    ecriture = "Arial";
    break;
    case 2:
    ecriture = "Serif";
    break;
    case 3:
    ecriture = "Dialog";
    break;
    }
    }
    });
    jb.add(cb);
    gras = new JCheckBox("Gras");
    ital = new JCheckBox("Italique");
    bcoul=new JButton(new ImageIcon("images/couleur.gif"));
    bcoul.addActionListener(new ColorListener2());
    jb.add(gras);
    jb.add(ital);
    jb.add(bcoul);
    this.add(jb,BorderLayout.NORTH);

    jta=new JTextArea();

    this.add(jta,BorderLayout.CENTER);

    JButton b = new JButton("ok");
    this.add(b,BorderLayout.SOUTH);

    b.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e) {
    d.dispose();
    jtf=new JTextField();
    jtf.setFont(new Font(ecriture,Font.PLAIN,20));
    if(gras.isSelected())
    jtf.setFont( jta.getFont().deriveFont(Font.BOLD) );
    if(ital.isSelected())
    jtf.setFont(jta.getFont().deriveFont(Font.ITALIC));
    mot=jta.getText();
    UnPoint p1 = new UnPoint(x.rendreY(),y.rendreX());
    UnPoint p2 = new UnPoint(x.rendreX(),y.rendreY());
    int lon = (int)p1.distance(x);
    int lar = (int)y.distance(p1);
    System.out.println(lon);
    System.out.println(lar);
    jtf.setBounds(x.rendreX(), x.rendreY(), 100, 100);
    jtf.setOpaque(false);
    jtf.setForeground(col);
    jtf.setText(mot);
    jtf.setBorder(null);
    df.add(jtf);
    jtf.requestFocus();

    }

    });
    d.add(this);
    d.setVisible(true);
    }
    }


    }


    • Partager sur Facebook
    • Partager sur Twitter
      19 janvier 2011 à 16:08:20

      Salut,

      Merci d'utiliser le Zcode pour afficher les sources (bouton Image utilisateur). Il faut également le mettre en secret quand il est trop grand, afin de ne pas obliger les visiteurs du sujet à scroller pendant 50 pages pour voir les réponses.
      • Partager sur Facebook
      • Partager sur Twitter
      Directeur technique, créateur de jeux HTML5 et fan de JavaScript | La suite de OnHack est sur les rails !
        19 janvier 2011 à 17:35:14

        +1 pour le ZCode et le secret.

        Pour ton code, plusieurs choses.

        1. Le setJMenuBar est justement là pour être intégré facilement. Donc dans ta classe Fenetre :
        this.setJMenuBar(menuBar);
        


        2. Ton panel "secondaire" ne doit comporter que la toolbar.
        3. Ne fais pas le setLayout sur "secondaire", puisque tu n'auras que le toolbar a mettre dedans.
        Donc dans le constructeur de ta classe Fenetre, tu supprimes
        secondaire.setLayout(new BorderLayout());
        

        Et pour ajouter la toolBar :
        secondaire.add(toolBar);
        



        • Partager sur Facebook
        • Partager sur Twitter

        Probleme fenetre barre au dessu

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown