Menüleiste wird überlappt

Status
Nicht offen für weitere Antworten.

theuserbl

Bekanntes Mitglied
Hi!

Ich probiere mich ja immer mal wieder in Java. Und immer wieder gibt es Probleme.
Eigentlich bevorzuge ich ja QBasic/FreeBASIC und so. Auch ANSI C finde ich toll. Doch objektoruientierte Sprachen...
Habe schon einige Bücher dazu gelesen. Aber irgendwie ist scheinbar Leraning by doing besser.

Naja, hör ich erst mal auf zu klagen.
Also hier mein Problem:
Wenn ich folgendes Programm starte, dann wird das Menü nicht komplett gemalt. Es wird irgendwie von dem Zeichenbereich überlappt.

Gundula.java

Wem die Grafik dazu fehlen oder so, hier das Programm mit enthaltenen Grafik-Dateien als sofort ausführbare Jar-Datei (in der übrigens ebenfalls dieser soeben gezeigte Java-Quellcode enthalten ist):
Gundula.jar

Auch stört mich etwas, daß ich auf der rechten Seite dem JTree keine bestimmte Breite zuweisen kann. Hatte es ja schon auf sämtliche Arten mit Dimension (einfach im Quellcode gucken) versucht.
Und der Bereich links mit den Buttons ist wiederum etwas zu groß. Und auch dort kann ich keine bestimmte Breite zuweisen. 🙁

Was das Forum hier angeht, mußte ich nun auf den Quelltext extern verweisen und konnte ihn hier nicht einfügen, da sonst der Text hier für das Forum zu lang geworden wäre.

Grüße
theuserbl
 
Ah, wenn ich es anfühe, kann ich den Quellcode doch noch posten. 🙂
Vielleicht ist es dann für Euch einfacher ihn zu lesen, als sich extra die Java-Datei runterladen zu müssen.

Java:
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.border.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class Gundula extends JFrame implements ActionListener
{
  private JMenuBar menueLeiste;
  private JMenu file, edit, project, language, help;
  private JMenuItem file_new, file_open, file_save, file_saveas, file_close, file_make, file_exit;
  private JMenuItem edit_undo, edit_redo, edit_cut, edit_copy, edit_paste, edit_delete;
  private JMenuItem edit_print, edit_find, edit_findnext, edit_replace;
  private JMenuItem project_start, project_startfull, project_procedure, project_single;
  private JMenuItem project_block, project_toggle, project_next, project_references;
  private JCheckBoxMenuItem language_english, language_deutsch;
  private JMenuItem help_homepage, help_forum, help_update, help_info;
  
  private ButtonGroup languageGroup;

  public void createMenuEnglish() {
    menueLeiste.removeAll();
    file = new JMenu("File");
    edit = new JMenu("Edit");
    project = new JMenu("Project");
    language = new JMenu("Language");
    help = new JMenu("?");

    file_new     = new JMenuItem("New Project...");
    file_new.setAccelerator (KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK));
    file_open    = new JMenuItem("Open Project...");
    file_open.setAccelerator (KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK));
    file_save    = new JMenuItem("Save Project");
    file_saveas  = new JMenuItem("Save Project As...");
    file_close   = new JMenuItem("Close Project");
    file_make    = new JMenuItem("Make Project...");
    file_exit    = new JMenuItem("Exit");
    file_exit.setAccelerator (KeyStroke.getKeyStroke(KeyEvent.VK_Q, ActionEvent.CTRL_MASK));

    edit_undo    = new JMenuItem("Undo");
    edit_undo.setAccelerator (KeyStroke.getKeyStroke(KeyEvent.VK_Z, ActionEvent.CTRL_MASK));
    edit_redo    = new JMenuItem("Redo");
    edit_redo.setAccelerator (KeyStroke.getKeyStroke(KeyEvent.VK_R, ActionEvent.CTRL_MASK));
    edit_cut     = new JMenuItem("Cut");
    edit_copy    = new JMenuItem("Copy");
    edit_paste   = new JMenuItem("Paste");
    edit_delete  = new JMenuItem("Delete");
    edit_print   = new JMenuItem("Print...");
    edit_print.setAccelerator (KeyStroke.getKeyStroke(KeyEvent.VK_P, ActionEvent.CTRL_MASK));
    edit_find    = new JMenuItem("Find...");
    edit_find.setAccelerator (KeyStroke.getKeyStroke(KeyEvent.VK_F, ActionEvent.CTRL_MASK));
    edit_findnext= new JMenuItem("Find Next");
    edit_findnext.setAccelerator (KeyStroke.getKeyStroke(KeyEvent.VK_F3, 0));
    edit_replace = new JMenuItem("Replace...");
    edit_replace.setAccelerator (KeyStroke.getKeyStroke(KeyEvent.VK_H, ActionEvent.CTRL_MASK));

    project_start= new JMenuItem("Start");
    project_start.setAccelerator (KeyStroke.getKeyStroke(KeyEvent.VK_F5, 0));
    project_startfull= new JMenuItem("Start With Full Compile");
    project_startfull.setAccelerator (KeyStroke.getKeyStroke(KeyEvent.VK_F6, 0));
    project_procedure= new JMenuItem("Procedurestep");
    project_procedure.setAccelerator (KeyStroke.getKeyStroke(KeyEvent.VK_F7, 0));
    project_single= new JMenuItem("Singlestep");
    project_single.setAccelerator (KeyStroke.getKeyStroke(KeyEvent.VK_F8, 0));
    project_block= new JMenuItem("Blockstep");
    project_block.setAccelerator (KeyStroke.getKeyStroke(KeyEvent.VK_F9, 0));
    project_toggle= new JMenuItem("Toggle Bookmark");
    project_next = new JMenuItem("Next Bookmark");
    project_references= new JMenuItem("References (Classpath)...");
    project_references.setAccelerator (KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0));

    languageGroup  = new ButtonGroup();
    language_english = new JCheckBoxMenuItem("English");
    language_deutsch = new JCheckBoxMenuItem("Deutsch");
    language_english.setSelected(true);
    language_deutsch.setSelected(false);

    help_homepage= new JMenuItem("Homepage");
    help_forum  = new JMenuItem("Userforum");
    help_update = new JMenuItem("Update Gundula");
    help_info   = new JMenuItem("Info");

    createMenuAll();

  }

  public void createMenuDeutsch() {
    menueLeiste.removeAll();
    file = new JMenu("Datei");
    edit = new JMenu("Bearbeiten");
    project = new JMenu("Projekt");
    language = new JMenu("Sprache");
    help = new JMenu("?");

    file_new     = new JMenuItem("Neues Projekt...");
    file_new.setAccelerator (KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK));
    file_open    = new JMenuItem("Projekt \u00f6ffnen...");
    file_open.setAccelerator (KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK));
    file_save    = new JMenuItem("Projekt speichern");
    file_saveas  = new JMenuItem("Projekt speichern unter");
    file_close   = new JMenuItem("Alles schlie\u00dfen");
    file_make    = new JMenuItem("Projekt kompilieren...");
    file_exit    = new JMenuItem("Beenden");
    file_exit.setAccelerator (KeyStroke.getKeyStroke(KeyEvent.VK_Q, ActionEvent.CTRL_MASK));

    edit_undo    = new JMenuItem("R\u00fcckg\u00e4ngig");
    edit_undo.setAccelerator (KeyStroke.getKeyStroke(KeyEvent.VK_Z, ActionEvent.CTRL_MASK));
    edit_redo    = new JMenuItem("Wiederholen");
    edit_redo.setAccelerator (KeyStroke.getKeyStroke(KeyEvent.VK_R, ActionEvent.CTRL_MASK));
    edit_cut     = new JMenuItem("Ausschneiden");
    edit_copy    = new JMenuItem("Kopieren");
    edit_paste   = new JMenuItem("Einf\u00fcgen");
    edit_delete  = new JMenuItem("L\u00f6schen");
    edit_print   = new JMenuItem("Drucken");
    edit_print.setAccelerator (KeyStroke.getKeyStroke(KeyEvent.VK_P, ActionEvent.CTRL_MASK));
    edit_find    = new JMenuItem("Suchen");
    edit_find.setAccelerator (KeyStroke.getKeyStroke(KeyEvent.VK_F, ActionEvent.CTRL_MASK));
    edit_findnext= new JMenuItem("Weitersuchen");
    edit_findnext.setAccelerator (KeyStroke.getKeyStroke(KeyEvent.VK_F3, 0));
    edit_replace = new JMenuItem("Ersetzen...");
    edit_replace.setAccelerator (KeyStroke.getKeyStroke(KeyEvent.VK_H, ActionEvent.CTRL_MASK));

    project_start= new JMenuItem("Starten");
    project_start.setAccelerator (KeyStroke.getKeyStroke(KeyEvent.VK_F5, 0));
    project_startfull= new JMenuItem("Starten, vollst\u00e4ndige Kompilierung");
    project_startfull.setAccelerator (KeyStroke.getKeyStroke(KeyEvent.VK_F6, 0));
    project_procedure= new JMenuItem("Prozedur abschlie\u00dfen");
    project_procedure.setAccelerator (KeyStroke.getKeyStroke(KeyEvent.VK_F7, 0));
    project_single= new JMenuItem("Einzelschritt");
    project_single.setAccelerator (KeyStroke.getKeyStroke(KeyEvent.VK_F8, 0));
    project_block= new JMenuItem("Prozedurschritt");
    project_block.setAccelerator (KeyStroke.getKeyStroke(KeyEvent.VK_F9, 0));
    project_toggle= new JMenuItem("Lesezeichen ein/aus");
    project_next = new JMenuItem("Zum n\u00e4chsten Lesezeichen");
    project_references= new JMenuItem("Projektverweise (Classpath)...");
    project_references.setAccelerator (KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0));

    languageGroup  = new ButtonGroup();
    language_english = new JCheckBoxMenuItem("English");
    language_deutsch = new JCheckBoxMenuItem("Deutsch");
    language_english.setSelected(false);
    language_deutsch.setSelected(true);

    help_homepage= new JMenuItem("Homepage");
    help_forum  = new JMenuItem("Userforum");
    help_update = new JMenuItem("Update Gundula");
    help_info   = new JMenuItem("Info");

    createMenuAll();

  }

  public void createMenuAll() {

    language_english.addActionListener(this);
    language_deutsch.addActionListener(this);

    language.add(language_english);
    language.add(language_deutsch);

    languageGroup.add(language_english);
    languageGroup.add(language_deutsch);

    file.add(file_new);
    file.addSeparator();
    file.add(file_open);
    file.add(file_save);
    file.add(file_saveas);
    file.add(file_close);
    file.addSeparator();
    file.add(file_make);
    file.addSeparator();
    file.add(file_exit);
    file_exit.addActionListener(this);

    edit.add(edit_undo);
    edit.add(edit_redo);
    edit.addSeparator();
    edit.add(edit_cut);
    edit.add(edit_copy);
    edit.add(edit_paste);
    edit.add(edit_delete);
    edit.addSeparator();
    edit.add(edit_print);
    edit.addSeparator();
    edit.add(edit_find);
    edit.add(edit_findnext);
    edit.add(edit_replace);

    project.add(project_start);
    project.add(project_startfull);
    project.add(project_procedure);
    project.add(project_single);
    project.add(project_block);
    project.addSeparator();
    project.add(project_toggle);
    project.add(project_next);
    project.addSeparator();
    project.add(project_references);

    help.add(help_homepage);
    help.add(help_forum);
    help.add(help_update);
    help.addSeparator();
    help.add(help_info);

    menueLeiste.add(file);
    menueLeiste.add(edit);
    menueLeiste.add(project);
    menueLeiste.add(language);
    menueLeiste.add(help);

    setJMenuBar(menueLeiste);    
  }

  public Gundula()
  {
    super("Gundula");

    menueLeiste = new JMenuBar();
    createMenuEnglish();





    JToolBar tb = new JToolBar();
    JButton T_New = new JButton(new ImageIcon(getClass().getResource("icons/toolbar/application_add.png")));
    JButton T_Open = new JButton(new ImageIcon(getClass().getResource("icons/toolbar/folder_page.png")));
    JButton T_Save = new JButton(new ImageIcon(getClass().getResource("icons/toolbar/disk_multiple.png")));

    JButton T_Copy = new JButton(new ImageIcon(getClass().getResource("icons/toolbar/page_copy.png")));
    JButton T_Paste = new JButton(new ImageIcon(getClass().getResource("icons/toolbar/page_paste.png")));
    JButton T_Print = new JButton(new ImageIcon(getClass().getResource("icons/toolbar/printer.png")));
    JButton T_Search = new JButton(new ImageIcon(getClass().getResource("icons/toolbar/page_find.png")));

    JButton T_Undo = new JButton(new ImageIcon(getClass().getResource("icons/toolbar/arrow_redo_rotated.png")));
    T_Undo.setEnabled(false);
    JButton T_Redo = new JButton(new ImageIcon(getClass().getResource("icons/toolbar/arrow_redo.png")));
    T_Redo.setEnabled(false);

    JButton T_Run = new JButton(new ImageIcon(getClass().getResource("icons/toolbar/resultset_next.png")));
    JButton T_Pause = new JButton(new ImageIcon(getClass().getResource("icons/toolbar/jabaco_pause.png")));
    T_Pause.setEnabled(false);
    JButton T_Stop = new JButton(new ImageIcon(getClass().getResource("icons/toolbar/jabaco_stop.png")));
    T_Stop.setEnabled(false);

    JButton T_Blue = new JButton(new ImageIcon(getClass().getResource("icons/toolbar/tag_blue.png")));
    JButton T_BlueAdd = new JButton(new ImageIcon(getClass().getResource("icons/toolbar/tag_blue_add.png")));
    JButton T_BlueRem = new JButton(new ImageIcon(getClass().getResource("icons/toolbar/tag_blue_delete.png")));

    JButton T_OutCom = new JButton(new ImageIcon(getClass().getResource("icons/toolbar/jabaco_text_indent.png")));
    JButton T_OutComRem = new JButton(new ImageIcon(getClass().getResource("icons/toolbar/jabaco_text_indent_remove.png")));

    JButton T_PrevPage = new JButton(new ImageIcon(getClass().getResource("icons/toolbar/bullet_go_flip.png")));
    JButton T_NextPage = new JButton(new ImageIcon(getClass().getResource("icons/toolbar/bullet_go.png")));

    tb.add(T_New);
    tb.add(T_Open);
    tb.add(T_Save);
    tb.addSeparator();
    tb.add(T_Copy);
    tb.add(T_Paste);
    tb.add(T_Print);
    tb.add(T_Search);
    tb.addSeparator();
    tb.add(T_Undo);
    tb.add(T_Redo);
    tb.addSeparator();
    tb.add(T_Run);
    tb.add(T_Pause);
    tb.add(T_Stop);
    tb.addSeparator();
    tb.add(T_Blue);
    tb.add(T_BlueAdd);
    tb.add(T_BlueRem);
    tb.addSeparator();
    tb.add(T_OutCom);
    tb.add(T_OutComRem);
    tb.addSeparator();
    tb.add(T_PrevPage);
    tb.add(T_NextPage);


    JPanel panel=new JPanel();
    panel.add(tb);


    JPanel tools = new JPanel();
    //JToolBar tools = new JToolBar();
    tools.setLayout(new GridLayout(13,1));
    JToggleButton L_tool01 = new JToggleButton("", new ImageIcon(getClass().getResource("icons/tools/tool001.png")), true);
    JToggleButton L_tool02 = new JToggleButton("", new ImageIcon(getClass().getResource("icons/tools/tool002.png")), false);
    JToggleButton L_tool03 = new JToggleButton("", new ImageIcon(getClass().getResource("icons/tools/tool003.png")), false);
    JToggleButton L_tool04 = new JToggleButton("", new ImageIcon(getClass().getResource("icons/tools/tool004.png")), false);
    JToggleButton L_tool05 = new JToggleButton("", new ImageIcon(getClass().getResource("icons/tools/tool005.png")), false);
    JToggleButton L_tool06 = new JToggleButton("", new ImageIcon(getClass().getResource("icons/tools/tool006.png")), false);
    JToggleButton L_tool07 = new JToggleButton("", new ImageIcon(getClass().getResource("icons/tools/tool007.png")), false);
    JToggleButton L_tool08 = new JToggleButton("", new ImageIcon(getClass().getResource("icons/tools/tool008.png")), false);
    JToggleButton L_tool09 = new JToggleButton("", new ImageIcon(getClass().getResource("icons/tools/tool009.png")), false);
    JToggleButton L_tool10 = new JToggleButton("", new ImageIcon(getClass().getResource("icons/tools/tool010.png")), false);
    JToggleButton L_tool11 = new JToggleButton("", new ImageIcon(getClass().getResource("icons/tools/tool011.png")), false);
    JToggleButton L_tool12 = new JToggleButton("", new ImageIcon(getClass().getResource("icons/tools/tool012.png")), false);
    JToggleButton L_tool13 = new JToggleButton("", new ImageIcon(getClass().getResource("icons/tools/tool013.png")), false);
    JToggleButton L_tool14 = new JToggleButton("", new ImageIcon(getClass().getResource("icons/tools/tool014.png")), false);
    JToggleButton L_tool15 = new JToggleButton("", new ImageIcon(getClass().getResource("icons/tools/tool015.png")), false);
    JToggleButton L_tool16 = new JToggleButton("", new ImageIcon(getClass().getResource("icons/tools/tool016.png")), false);
    JToggleButton L_tool17 = new JToggleButton("", new ImageIcon(getClass().getResource("icons/tools/tool017.png")), false);
    JToggleButton L_tool18 = new JToggleButton("", new ImageIcon(getClass().getResource("icons/tools/tool018.png")), false);
    JToggleButton L_tool19 = new JToggleButton("", new ImageIcon(getClass().getResource("icons/tools/tool019.png")), false);
    JToggleButton L_tool20 = new JToggleButton("", new ImageIcon(getClass().getResource("icons/tools/tool020.png")), false);
    JToggleButton L_tool21 = new JToggleButton("", new ImageIcon(getClass().getResource("icons/tools/tool021.png")), false);
    JToggleButton L_tool22 = new JToggleButton("", new ImageIcon(getClass().getResource("icons/tools/tool022.png")), false);
    JToggleButton L_tool23 = new JToggleButton("", new ImageIcon(getClass().getResource("icons/tools/tool023.png")), false);
    JToggleButton L_tool24 = new JToggleButton("", new ImageIcon(getClass().getResource("icons/tools/tool024.png")), false);
    JToggleButton L_tool25 = new JToggleButton("", new ImageIcon(getClass().getResource("icons/tools/tool025.png")), false);
    JToggleButton L_tool26 = new JToggleButton("", new ImageIcon(getClass().getResource("icons/tools/tool026.png")), false);

    tools.add(L_tool01);
    tools.add(L_tool02);
    tools.add(L_tool03);
    tools.add(L_tool04);
    tools.add(L_tool05);
    tools.add(L_tool06);
    tools.add(L_tool07);
    tools.add(L_tool08);
    tools.add(L_tool09);
    tools.add(L_tool10);
    tools.add(L_tool11);
    tools.add(L_tool12);
    tools.add(L_tool13);
    tools.add(L_tool14);
    tools.add(L_tool15);
    tools.add(L_tool16);
    tools.add(L_tool17);
    tools.add(L_tool18);
    tools.add(L_tool19);
    tools.add(L_tool20);
    tools.add(L_tool21);
    tools.add(L_tool22);
    tools.add(L_tool23);
    tools.add(L_tool24);
    tools.add(L_tool25);
    tools.add(L_tool26);

    ButtonGroup toolsGroup = new ButtonGroup();
    toolsGroup.add(L_tool01);
    toolsGroup.add(L_tool02);
    toolsGroup.add(L_tool03);
    toolsGroup.add(L_tool04);
    toolsGroup.add(L_tool05);
    toolsGroup.add(L_tool06);
    toolsGroup.add(L_tool07);
    toolsGroup.add(L_tool08);
    toolsGroup.add(L_tool09);
    toolsGroup.add(L_tool10);
    toolsGroup.add(L_tool11);
    toolsGroup.add(L_tool12);
    toolsGroup.add(L_tool13);
    toolsGroup.add(L_tool14);
    toolsGroup.add(L_tool15);
    toolsGroup.add(L_tool16);
    toolsGroup.add(L_tool17);
    toolsGroup.add(L_tool18);
    toolsGroup.add(L_tool19);
    toolsGroup.add(L_tool20);
    toolsGroup.add(L_tool21);
    toolsGroup.add(L_tool22);
    toolsGroup.add(L_tool23);
    toolsGroup.add(L_tool24);
    toolsGroup.add(L_tool25);
    toolsGroup.add(L_tool26);
 

//    tools.setOrientation(SwingConstants.VERTICAL);
//    JPanel toolspanel= new JPanel();
//    toolspanel.add(tools);

    JComponent toolspanel = new JScrollPane(tools);
/*    toolspanel.setBorder(new GradientTitleBorder("Tools",
          new Color(0x418EDC), new Color(0x6B91B8), Color.WHITE, 18));*/
    toolspanel.setBorder(BorderFactory.createTitledBorder("Tools"));
    add(toolspanel,BorderLayout.EAST);





//    setContentPane(panel);
    setLayout(new BorderLayout());

////    JTextArea ta = new JTextArea();
    MeineCanvas malflaeche = new MeineCanvas();
    malflaeche.setCursor(new Cursor(Cursor.HAND_CURSOR));

    add(tb,BorderLayout.NORTH);
    add(toolspanel,BorderLayout.WEST);
////    add(ta,BorderLayout.CENTER);
    add(malflaeche,BorderLayout.CENTER);




      JComponent display1 = new JScrollPane(new MJTree());
/*      display1.setBorder(new GradientTitleBorder("Projects",
            new Color(0x418EDC), new Color(0x6B91B8), Color.WHITE, 18));*/
      display1.setBorder(BorderFactory.createTitledBorder("Projects"));
      add(display1,BorderLayout.EAST);


  }


  public void actionPerformed(ActionEvent event) {
    if (event.getSource() == language_english) {
      createMenuEnglish();
    } else if (event.getSource() == language_deutsch) {
      createMenuDeutsch();
    } else if (event.getSource() == file_exit) {
      System.exit(0);
    }
  }

  public class MJTree extends JTree {
    public Dimension getMinimumSize() {
      return new Dimension(700,700);
    }
    public Dimension getPreferedSize() {
      return getMinimumSize();
    }
  }


  public static void main(String[] args)
  {
    JFrame rahmen = new Gundula();

    WindowListener l = new WindowAdapter()
    {
      public void windowClosing(WindowEvent we)
      {
        System.exit(0);
      }
    };

    rahmen.addWindowListener(l);
    rahmen.setSize(750,700);
    rahmen.setVisible(true);
  }

  class MeineCanvas extends Canvas {

    public Dimension getMinimumSize() {
      return new Dimension(50,50);
    }
    public Dimension getPreferedSize() {
      return getMinimumSize();
    }



//    setBackground(Color.white);
//    setForeground(Color.black);
    public void paint(Graphics g)
    {
      g.setColor(Color.white);
      g.fillRect(0,0,5000,5000);
      g.setColor(Color.black);
      drawFrame(g,400,300);
    }
    public void drawFrame(Graphics g,int mywidth,int myheight) {
      g.setColor(Color.black);
      g.drawRect(7,7,mywidth-1,myheight-1);
      g.setColor(new Color(239,239,239));
      g.fillRect(8,8,mywidth-2,myheight-2);
      g.setColor(Color.black);
      g.drawRect(0,0,6,6);
      g.drawRect(mywidth+8,0,6,6);
      g.drawRect(0,myheight+8,6,6);
      g.drawRect((int)mywidth/2+4,0,6,6);
      g.drawRect(0,(int)myheight/2+4,6,6);
      g.fillRect(mywidth+9,myheight+9,5,5);
      g.fillRect((int)mywidth/2+5,myheight+9,5,5);
      g.fillRect(mywidth+9,(int)myheight/2+5,5,5);
      for (int pointy=0; pointy<myheight; pointy+=8)
      {
        for (int pointx=0; pointx<mywidth; pointx+=8)
        {
          g.fillRect(pointx+7,pointy+7,1,1);
        }
      }
//      g.drawLine(0,0,mywidth,myheight);
    }
  }









   /**
    * Custom border class, paints a titled border using a gradient. 
    * taken from [url=http://wiki.java.net/bin/view/Projects/CustomBorderDemo]TWiki . Projects . CustomBorderDemo[/url]
    */
   public class GradientTitleBorder implements Border {

    public Dimension getMinimumSize() {
      return new Dimension(700,700);
    }
    public Dimension getPreferedSize() {
      return getMinimumSize();
    }



      private String title;

      private int titleHeight;

      private Insets insets = new Insets(titleHeight, 0, 0, 0);

      private Color primaryColor;

      private Color secondaryColor;

      private Color fontColor;

      private Color shadowColor;

      private int indent = 5;
      
      private Font titleFont;

      /**
       * Constructtor that assumes a title height.
       * 
       * @param title - string to display
       * @param primaryColor - first color of gradient
       * @param secondaryColor - second color of gradient (lower)
       * @param fontColor - color for the font
       */
      public GradientTitleBorder(String title, Color primaryColor,
            Color secondaryColor, Color fontColor) {
         this(title, primaryColor, secondaryColor, fontColor, 30);
      }

      /**
       * Full option constructor
       * 
       * @param title - string to display
       * @param primaryColor - first color of gradient
       * @param secondaryColor - second color of gradient (lower)
       * @param fontColor - color for the font
       * @param titleHeight - height of the title bar
       */
      public GradientTitleBorder(String title, Color primaryColor,
            Color secondaryColor, Color fontColor, int titleHeight) {
         this.title = title;
         this.titleHeight = titleHeight;
         this.insets = new Insets(titleHeight, 2, 2, 2);
         this.primaryColor = primaryColor;
         this.shadowColor = primaryColor.darker();
         this.secondaryColor = secondaryColor;
         this.fontColor = fontColor;
         this.titleFont = UIManager.getFont("TitledBorder.font").deriveFont(Font.BOLD);
      }

      /**
       * Creates a GradientTitleBorder with default values.
       * @param title
       */
      public GradientTitleBorder(String title) {
         this(title, Color.BLACK, Color.GRAY, Color.WHITE, 30);
      }

      /**
       * 
       */
      public Insets getBorderInsets(Component c) {
         return insets;
      }

      /**
       * 
       */
      public boolean isBorderOpaque() {
         return false;
      }

      /**
       * paint the border, being carefull to stay inside the insets.  
       */
      public void paintBorder(Component c, Graphics g, int x, int y,
            int width, int height) {
         
         Graphics2D g2d = (Graphics2D) g;
         g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
               RenderingHints.VALUE_ANTIALIAS_ON);

         GradientPaint gp = new GradientPaint(x, y, primaryColor, x, y
               + titleHeight, secondaryColor);
         g2d.setPaint(gp);
         g2d.fillRect(x, y, width, titleHeight);

         g2d.setColor(shadowColor);
         g2d.drawRect(x, y - 1, width - 1, titleHeight);

         g2d.setFont(titleFont);

         g2d.setColor(shadowColor);
         int titleOffset = (titleHeight / 2) + (c.getFont().getSize() / 2)
               - 1;

         g2d.drawString(title, x + insets.left + indent + 1, y + titleOffset
               + 1);

         g2d.setColor(fontColor);
         g2d.drawString(title, x + insets.left + indent, y + titleOffset);

         g2d.setColor(shadowColor);
         g2d.drawRect(x, y - 1, width - 1, height);
      }
   }














}
 
Zuletzt bearbeitet von einem Moderator:
ich habe jetzt wenig Elan, mir den gesammten code anzusehen, aber üblicherweise überdecken sich Komponenten ungeweollt, wenn du (versehendlich) statt einem SwingComponent einen AWTComponent benutzt. zB. Button statt JButton.
Guck mal, ob du irgendwo versehentlich das "J" vergessen hast....
 
Kann man den Code nicht auf's wesentliche kürzen:shock:
Was ich so beim drüberscrollen festgestellt habe ist, dass Du ein Canvas verwendest, was eine awt-Klasse ist. Verwende stattdessen lieber JComponent bzw. JPanel.
 
Danke. 🙂

Habe jetzt Canvas durch JComponent ersetzt und nun ist das Überlappungsproblem behoben.
(Blöd, daß es zum Canvas nicht ein JCanvas gibt. Wenn man nicht weiß, welche AWT-Komponente wo ihre Entsprechung in Swing findet, kann es zu Problemen kommen.
Danke noch mal ihr beiden.

Bleibt jetzt nur noch das Größenproblem.
Bei JTree die Breite zu klein und bei den Buttons links die Breite und Höhe zu groß.

Edit: Habe nun die beiden hochgeladenen Dateien Gundula.jar und Gundula.java durch die aktualisierten Versionen ersetzt.
 
Zuletzt bearbeitet:
Mal ein Beispiel wie man sich extrem viel unnötige, unsaubere und fehleranfälllige Tipparbeit sparen kann:
Deine Zeilen 293 bis 373 (=80 Zeilen) umgeschrieben:
Java:
ButtonGroup toolsGroup = new ButtonGroup();
JToggleButton[] toggleButtons = new JToggleButton[26];
java.text.DecimalFormat formatter = new java.text.DecimalFormat("000");
for(int i=0;i<toggleButtons.length;++i){
	tools.add(toggleButtons[i] = new JToggleButton("", new ImageIcon(getClass().getResource("icons/tools/tool"+formatter.format(i)+".png")), i==0));
	toolsGroup.add(toggleButtons[i]);
}
 
Zuletzt bearbeitet:
Hmmm... danke.
Läuft hier jedoch damit irgendwie nicht.
Die Fehlermeldung:

Code:
Exception in thread "main" java.lang.NullPointerException
        at javax.swing.ImageIcon.<init>(ImageIcon.java:167)
        at Gundula.<init>(Gundula.java:297)
        at Gundula.main(Gundula.java:363)

Also irgendwie findet er damit dann die Grafiken nicht.
Werde ich mir aber noch mal zu Hause angucken. Also trotzdem Danke für diese Vereinfachung. 🙂
 
stimmt, i geht von 0 bis 25, du hast die Bilder aber von 1 bis 26 durchnummeriert.
Übergeb
formatter.format( ... )
einfach i+1 statt i
 
Ja, jetzt gehts. Danke. 🙂
Werde gleich auch noch mal die hochgeladenen Dateien aktualisieren, weil ich Deine Vereinfachung integrieren werde. Noch mal: Thx.

Aber trotzdem noch mal an alle:
Es besteht weiterhin das Problem mit der Breite des JTree und der Buttons auf der Linken Seite.
 
Wer keine Lust hat, die Jar-Datei herunterzuladen. Hier ein Screenshot des Programms.
Dann wird deutlicher, was ich damit meine, wenn ich sage, daß ich den JTree rechts gerne etwas breiter hätte und links die Buttons etwas kleiner.

Gundula.PNG


Und ein
Java:
    public Dimension getMinimumSize() {
      return new Dimension(700,700);
    }
    public Dimension getPreferedSize() {
      return getMinimumSize();
    }

an sämtlichen Stellen des Quellcodes bewirkt auch nichts.


Edit: Typo
 
Jetzt funzt es. 🙂

Bei
Java:
JPanel tools = new JPanel();
tools.setPreferredSize(new Dimension(2*35,13*35));

wird zum Beispiel der Button-Teil auf der linken Seite auf die richtige Größe getrimmt.
Und auf der rech6ten Seite, wo der JTree ist, ist es ähnlich.

Irgendwie ist setPreferredSize() in java.awt.Component, von dem JPanel anbgeleitet ist.
Kein Wunder, daß ich dann mit Hilfe von dem BeanShell-Browser nichts im JPanel selber oder so dazu finde.
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben