Abstand von Menüeinträgen verringern

Hallo zusammen,

ich habe ein JMenu, das eine relativ große Anzahl von JMenuItems enthält.

ich würde gern den (vertikalen) Abstand zwischen den Menüeinträgen verringern, damit das Menü nicht ganz so lang wird. Habe die Schriftgröße verändert, aber das hilft leider nicht weiter.

Vielleicht weiß ja von euch, an welcher Schraube man drehen muss ...

Gruß,
Peter
 
Hi also bi grad net zu Hause und hab kein Java hier aber probiere doch mal ob es möglich ist die Größe des JMenuItem wie einen JButton über
.setPreferredSize(new Dimension(30,10));
zu ändern. Keine Gewährung probiere es aber sobald wie möglich aus dann poste ich nochma
MFG bigboombang
 
Hallo Peter,

Java:
import java.awt.Dimension;
import java.io.PrintStream;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

public class NarrowMenuExample extends JFrame {

	PrintStream o = System.out;

	JMenuBar menubar = new JMenuBar();

	JMenu menuD = new JMenu("Datei");

	JMenuItem d1 = new JMenuItem("d1");

	JMenuItem d2 = new JMenuItem("d2");

	JMenuItem d3 = new JMenuItem("d3");

	JMenu menuB = new JMenu("Bearbeiten");

	JNarrowMenuItem b1 = new JNarrowMenuItem("b1");

	JNarrowMenuItem b2 = new JNarrowMenuItem("b2");

	JNarrowMenuItem b3 = new JNarrowMenuItem("b3");

	public NarrowMenuExample() {
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setLocationByPlatform(true);
		this.setJMenuBar(menubar);

		menubar.add(menuD);
		menubar.add(menuB);

		menuD.add(d1);
		menuD.add(d2);
		menuD.add(d3);

		menuB.add(b1);
		menuB.add(b2);
		menuB.add(b3);

		this.pack();
		this.setVisible(true);

		o.println(d1.getPreferredSize());
		o.println(b1.getPreferredSize());
	}

	public static void main(String[] args) {
		new NarrowMenuExample();
	}

	class JNarrowMenuItem extends JMenuItem {
		int height = 10;

		public JNarrowMenuItem(String text) {
			super(text);
			this.setPreferredSize(new Dimension((int) this.getPreferredSize()
					.getWidth(), height));
		}
	}
}

Vg Erdal
 
Also ich konnte jetzt ausprobieren. Und es funktionierd also eine Zeile die zusätzlich geschrieben werden muss, was aber wenn du z.B. ein Array benutzt nich ins Gewicht fällt. Allerdings musst du zusätzlich die Bibliothek java.awt.*; importieren.
MFG bigboombang

So könnte es dann aussehen:
Code:
import java.awt.*;
import javax.swing.*;
class JMenu{
    public static void main(String[] args){
          JFrame x= new JFrame("Das JMenu mit versch großen Einträgen");
          x.setSize(300,200);
          x.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          JMenuBar mbar = new JMenuBar();
          x.setJMenuBar(mbar);
          JMenu menu = new JMenu("Hallo");
          JMenuItem item = new JMenuItem("Peter");
          menu.add(item);
          JMenuItem item1 = new JMenuItem("Peter");
          item1.setPreferredSize(new Dimension(20,40));
          menu.add(item1);
          mbar.add(menu);
          x.setVisible(true);
    }
}
P.S. Für Fehler garantiere ich nicht da der Code oben nicht Compiliert wurde.
Hoffe du kanst damit was anfangen.
 
Zurück