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
 

theuserbl

Bekanntes Mitglied
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:
B

bananenkasper

Gast
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....
 

Michael...

Top Contributor
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.
 

theuserbl

Bekanntes Mitglied
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:

Schandro

Top Contributor
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:

theuserbl

Bekanntes Mitglied
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. :)
 

Schandro

Top Contributor
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
 

theuserbl

Bekanntes Mitglied
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.
 

theuserbl

Bekanntes Mitglied
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
 

theuserbl

Bekanntes Mitglied
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.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P About - die Infofunktion in der Menüleiste Allgemeine Java-Themen 2
N Lwjgl 3d Objekt wird schmaler, wenn es sich dreht Allgemeine Java-Themen 0
D Linux, Java-Version wird nicht erkannt bzw. welche Einstellung fehlt noch? Allgemeine Java-Themen 19
berserkerdq2 Wenn ich einfach eine GIF in den Scenebuilder als Bild reinpacke, wird das dann asl Gif angezeigt Allgemeine Java-Themen 1
G Popup wird nicht sichtbar Allgemeine Java-Themen 9
8u3631984 Funktions Parameter mit Lombok "NonNull" annotieren wird in Jacococ Testcoverage nicht herausgefiltert Allgemeine Java-Themen 3
M Java Überprüfen ob .exe-Datei bereits ausgeführt wird Allgemeine Java-Themen 2
Calli11 Was muss ich hier in die Main schreiben, damit das Programm ausgeführt wird? Allgemeine Java-Themen 4
Sachinbhatt Wie wird die Typumwandlung bei Mehrfachvererbung in Java implementiert? Allgemeine Java-Themen 3
Y MVVM wie wird Eventhandler tausch geregelt Allgemeine Java-Themen 4
berserkerdq2 run-methode eines Threads so programmieren, dass 30x die Sekunde etwas ausgeführt wird. Allgemeine Java-Themen 44
T ImageIcon wird nicht angezeigt Allgemeine Java-Themen 6
N Warum wird die For Schleife nicht betreten Allgemeine Java-Themen 4
N warum wird es doppelt ausgegeben Allgemeine Java-Themen 6
A code wird nicht ausgeführt Allgemeine Java-Themen 3
Y Warum wird das JLabel falsch verschoben? Allgemeine Java-Themen 1
T Schaltfläche wird nicht gefunden Allgemeine Java-Themen 4
N Eingabe wird immer als "false" ausgegeben Allgemeine Java-Themen 6
D Firebase retrieve data Problem, Child Element wird nicht angesprochen Allgemeine Java-Themen 0
M Frage-Antwortspiel wie Wer wird Millionär Allgemeine Java-Themen 1
Zrebna Gibt es eine Möglichkeit eine NPE zu vermeiden, wenn null returned wird? Allgemeine Java-Themen 3
R Warum wird mir in der Konsole das "Standard Array" ausgegeben? Allgemeine Java-Themen 2
C FileLock - Exception wird immer geworfen Allgemeine Java-Themen 4
R Was muss ich ändern, damit der Kreis links unten gezeichnet wird? Allgemeine Java-Themen 17
hello_autumn Java_Home geändert auf Java 13, trotzdem wird Java Version 8 angezeigt. Allgemeine Java-Themen 2
Thallius Char +1 wird int? Allgemeine Java-Themen 7
S Wenn eine Klasse zwei Interfaces mit derselben Methodensignatur implementiert: welche wird aufgerufen? Allgemeine Java-Themen 15
F Scrollbar wird nicht angezeigt Allgemeine Java-Themen 0
B Discord Bot - Funktion wird nicht aufgerufen Allgemeine Java-Themen 1
I Temp-Datei wird nicht gelöscht Allgemeine Java-Themen 12
S If-Menü wird doppelt ausgegben Allgemeine Java-Themen 4
P Variable wird in for - loop nicht richtig hochgezählt Allgemeine Java-Themen 11
S Wird bei den JREs 9, 10, 11+ ueberhaupt noch Bytecode ausgefuehrt..? Allgemeine Java-Themen 8
FRI3ND JFrame wird nicht angezeigt Allgemeine Java-Themen 3
T Plötzlich wird package nicht mehr gefunden Allgemeine Java-Themen 3
X Klassen File-Klasse wird als Directory markiert Allgemeine Java-Themen 8
S Datei wird nicht gefunden Thread.currentThread().getContextClassLoader().getResourceAsStream() Allgemeine Java-Themen 1
mrbig2017 Sleep wird ignoriert und der Thread wartet nicht Allgemeine Java-Themen 1
mrbig2017 Threads wait wird nicht durch notify beendet! Allgemeine Java-Themen 3
kodela Klassen Klassenvariable wird nicht gesetzt Allgemeine Java-Themen 23
M Was geschieht mit Java-Klasse, die aus ArrayList entfernt wird? Allgemeine Java-Themen 10
kodela Drücken der ALT-Taste wird nur bei jedem zweiten Mal erkannt Allgemeine Java-Themen 5
Arif Input/Output Serialisierung - Datei wird nicht erzeugt Allgemeine Java-Themen 3
D Cursor unsichtbar, wenn Kontextmenü aufgerufen wird Allgemeine Java-Themen 5
K Arbeitsspeicher wird langsam voll Allgemeine Java-Themen 6
The Pi Wie oft wird ein Buchstabe in einem Wort wiederholt? Allgemeine Java-Themen 16
N Datentypen If-Statement wird "übersprungen" Allgemeine Java-Themen 2
F Java Mail Problem: Authentifizierung wird nicht immer mitgeschickt Allgemeine Java-Themen 1
T Textarea text wird immer überschrieben Allgemeine Java-Themen 4
C Durch klicken von Button in GUI wird leeres Fenster geöffnet und nicht mein Spiel "Memory" Allgemeine Java-Themen 13
T Java wird nicht gefunden Allgemeine Java-Themen 32
Tacofan GIF-Bild wird "zerstört" Allgemeine Java-Themen 3
Z Exception wird nicht ausgelöst Allgemeine Java-Themen 2
Sin137 Interface Eingabe wird doppelt angezeigt Allgemeine Java-Themen 2
B Threads Timer wird immer schneller Allgemeine Java-Themen 6
N Maven ObjectMapper Error wenn das File gespeichert wird Allgemeine Java-Themen 0
G Methoden Aus einem Event, wo ich weiß, dass es ausgeführt werden wird, eine Get-Methode basteln Allgemeine Java-Themen 8
F Wert in Variable schreiben, wenn diese gerade genutzt wird Allgemeine Java-Themen 10
E Java wird beendet nach paar Sekunden Allgemeine Java-Themen 14
U Erkennen, ob PC benutzt wird Allgemeine Java-Themen 4
O Programm wird einfach "gekillt" Allgemeine Java-Themen 3
P Prüfen ob es Variable mit Namen gibt der als String übergeben wird Allgemeine Java-Themen 7
P Zwei ArrayLists: Ohne die eine überhaupt anzurühren, wird sie verändert Allgemeine Java-Themen 2
B Abfragenteil wird nicht aufgerufen Allgemeine Java-Themen 2
Todesbote JFileChooser im Vordergrund (*.jar wird mittels shell_exec in PHP aufgerufen) Allgemeine Java-Themen 1
T Sicherheitshinweis - Zertifikat wird angefordert Allgemeine Java-Themen 5
L SetBounds wird vor dem Konstruktorcode aufgerufen - Wenn Startleiste links Allgemeine Java-Themen 1
P "Overriden statische Methode" Statische Methode die vererbt wird Allgemeine Java-Themen 5
I CountDown wird durch JOptionPane unterbrochen Allgemeine Java-Themen 11
P Wird double und float auf jedem Computer gleich berechnet? Allgemeine Java-Themen 10
G Tabelle wird nicht richtig dargestellt Allgemeine Java-Themen 9
HarleyDavidson Threads ProgressMonitor wird nicht angezeigt! Allgemeine Java-Themen 6
J OOP Überwachen, ob ein Objekt erzeugt wird Allgemeine Java-Themen 9
S Byte Array welches in Laufzeit aufgelöst wird // Objekt Array Allgemeine Java-Themen 3
A Long variable wird negativ??? Allgemeine Java-Themen 1
J CSV Datei wird ungewollt umformatiert Allgemeine Java-Themen 5
T MEthodenauruf testen, wenn instanz erst erzeugt wird Allgemeine Java-Themen 0
gamebreiti Swing JLabel wird nicht angezeigt Allgemeine Java-Themen 4
I Java Applet wird immer blockiert Allgemeine Java-Themen 3
E Java Editor Klasse wird nicht weiter ausgeführt Allgemeine Java-Themen 4
S Java Applet wird dauerhaft blockiert Allgemeine Java-Themen 1
I Datei wird nicht richtig gelöscht Allgemeine Java-Themen 7
K Methoden Objekt wird nicht erkannt Allgemeine Java-Themen 11
D Input/Output Datei wird lokal aber nicht vom Webserver ausgelesen... Allgemeine Java-Themen 2
F Nach Export wird PDF Datei nicht mehr gefunden Allgemeine Java-Themen 0
L Prüfen, ob Programm über 32bit oder 64bit Java ausgeführt wird Allgemeine Java-Themen 4
D ActionListener wird mit jedem Mal öfter aufgerufen Allgemeine Java-Themen 2
C System.in erhält Input von Tastatur. wo wird das festgelegt? Allgemeine Java-Themen 4
I Projekt wird nicht erstellt Allgemeine Java-Themen 2
T WeakReference/PhantomReference: Mitbekommen WELCHES Objekt nun GC'ed wird Allgemeine Java-Themen 2
A Threads Log4J Logger wird "überschrieben" Allgemeine Java-Themen 3
P Check, welche Java Version installiert bevor ein Programm ausgeführt wird. Allgemeine Java-Themen 12
J batch datei wird nicht aufgerufen Allgemeine Java-Themen 11
M Datei wird nicht vollständig geschrieben (FileOutputStream, OutputStreamWriter, Encoding) Allgemeine Java-Themen 6
P OSGi - Bundle-Methode wird nicht aufgerufen Allgemeine Java-Themen 3
S Antlr Grammatik übersetzt ohne Fehler, dennoch wird Zahl nicht als Eingabe erkannt Allgemeine Java-Themen 4
T Variablen Variable wird als nicht genutzt angezeigt Allgemeine Java-Themen 8
J Slideshow wird im IE überblendet Allgemeine Java-Themen 4
O Socket Object wird scheinbar falsch empfangen Allgemeine Java-Themen 6
J Textdatei auslesen, die gerade benutzt wird Allgemeine Java-Themen 8

Ähnliche Java Themen


Oben