JMenuBar + paint (Image)

Status
Nicht offen für weitere Antworten.

alife

Mitglied
Also ich habe in einem JFrame eine JMenuBar und will unter dieser JMenuBar ein Image positionieren.
Wenn ich das ganze mit paint() mache, dann sieht man keine JMenuBar mehr. Jetzt habe ich gelesen, dass man das ganze mit paintComponents() machen muss. Jetzt habe ich zwar ein Menü, aber kein Bild.

Ich poste einmal den Code, hoffentlich kann mir jemand helfen.

Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class Muehle extends JFrame implements ActionListener{
  // Anfang Variablen
    /* Allgemein
    ****************/
    public JPanel jpn = new JPanel();


    /* Menü
    ****************/
    public JMenuBar   menuBar      = new JMenuBar();
    public JMenu      datei        = new JMenu("Datei");
    public JMenu      options      = new JMenu ("Optionen");

    public JMenuItem  miNewConnect = new JMenuItem("Neu Verbinden");
    public JMenuItem  miClose      = new JMenuItem("Beenden");
    public JMenuItem  miNewStart   = new JMenuItem("Neu beginnen");

  // Ende Variablen

  public Muehle(String title) {
    // Frame-Initialisierung
    super(title);
    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent evt) { System.exit(0); } });
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    int frameWidth = 500;
    int frameHeight = 550;
    setSize(frameWidth, frameHeight);
    Container cp = getContentPane();
    cp.setLayout(null);

    // Anfang Komponenten

    /* Menü
    ****************/
    setJMenuBar(menuBar);
    //Positionieren der Elemente:
    menuBar.add(datei);
    menuBar.add(options);

    datei.add(miNewConnect);
    datei.addSeparator();
    datei.add(miClose);
    datei.setMnemonic('D');

    options.add(miNewStart);

    // Eigenschaften einstellen
    miNewConnect.setAccelerator(KeyStroke.getKeyStroke('C',KeyEvent.CTRL_MASK + KeyEvent.ALT_MASK));
    miNewConnect.setMnemonic('V');
    miClose.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F4,KeyEvent.ALT_MASK));
    miClose.setMnemonic('B');

    options.setMnemonic('O');
    miNewStart.setAccelerator(KeyStroke.getKeyStroke('N',KeyEvent.CTRL_MASK + KeyEvent.ALT_MASK));
    miNewStart.setMnemonic('N');
    // Aktionen zuweisen:

    miNewConnect.addActionListener(this);
    miClose.addActionListener(this);
    miNewStart.addActionListener(this);

    // Ende Komponenten

    setVisible(true);
  }

  // Anfang Ereignisprozeduren

  public void actionPerformed (ActionEvent e) {
    if(e.getActionCommand().equals("Beenden")){
     dispose();
    }

    System.out.println("Menüauswahl --> "
    + ((JMenuItem)e.getSource()).getActionCommand());
  }

  // Ende Ereignisprozeduren

  public void paint( Graphics g ) {
    g = getGraphics();
    Image img_brett = Toolkit.getDefaultToolkit().getImage("Mühle2.jpg");
    g.drawImage (img_brett, 0,0, 500, 500,this);
    repaint();
  }

  public static void main(String[] args) {
    new Muehle("Mühle");
  }
}
class Spielstein{
  private byte ring;      // siehe oben
  private byte platz;     // ----"-----
  private boolean farbe;  // 0 = weiß, 1 = schwarz
  public Spielstein(byte ring, byte platz, boolean farbe){
    this.ring = ring;
    this.platz = platz;
    this.farbe = farbe;
  }
  public void setRing  (byte ring){
    this.ring = ring;
  }
  public void setPlatz (byte platz){
    this.platz = platz;
  }
  public void setFarbe (boolean farbe){
    this.farbe = farbe;
  }
  public byte getRing (){
    return this.ring;
  }
  public byte getPlatz (){
    return this.platz;
  }
  public boolean getFrabe (){
    return this.farbe;
  }
}
 

sEREAL

Mitglied
glaube das repaint() ist da überflüssig, bzw stört

Du willst also ein bild im Window anzeigen ( nicht im menu als hintergrund, gell?)
Generell hab ich dafür immer ein eigenes Panel erzeugt (sollte aber auch mit JFrame gehen) das dann ungefähr so aussah:
Code:
class myPanel extends JPanel{
   public void paint( Graphics g ) {
       g.drawImage(...); // wie du es hast
   }
}
das wars .. kein repaint, kein getGraphics
optional kann man danach ein super.paint(g); hinzufügen und dafür sorgen, dass alle Componenten des Panels (wie etweige Textfelder ..) opaque = false haben, somit transparent werden.
 

alife

Mitglied
danke.

Es funktioniert aber noch immer nicht. Ich poste noch einmal den code:

Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Muehle extends JFrame implements ActionListener{
  // Anfang Variablen
    /* Allgemein
    ****************/
    myPanel jp = new myPanel();

    /* Menü
    ****************/
    public JMenuBar   menuBar      = new JMenuBar();
    public JMenu      datei        = new JMenu("Datei");
    public JMenu      options      = new JMenu ("Optionen");

    public JMenuItem  miNewConnect = new JMenuItem("Neu Verbinden");
    public JMenuItem  miClose      = new JMenuItem("Beenden");
    public JMenuItem  miNewStart   = new JMenuItem("Neu beginnen");

  // Ende Variablen

  public Muehle(String title) {
    // Frame-Initialisierung
    super(title);
    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent evt) { System.exit(0); } });
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    int frameWidth = 500;
    int frameHeight = 545;
    setSize(frameWidth, frameHeight);
    Container cp = getContentPane();
    cp.setLayout(null);

    // Anfang Komponenten
    /* Allgemeines
    ****************/
    cp.add(jp);
    jp.setLayout(null);
    jp.setBounds(0,0,500,500);
    jp.setBackground(Color.lightGray);
    /* Menü
    ****************/
    setJMenuBar(menuBar);
    //Positionieren der Elemente:
    menuBar.add(datei);
    menuBar.add(options);

    datei.add(miNewConnect);
    datei.addSeparator();
    datei.add(miClose);
    datei.setMnemonic('D');

    options.add(miNewStart);

    // Eigenschaften einstellen
    miNewConnect.setAccelerator(KeyStroke.getKeyStroke('C',KeyEvent.CTRL_MASK + KeyEvent.ALT_MASK));
    miNewConnect.setMnemonic('V');
    miClose.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F4,KeyEvent.ALT_MASK));
    miClose.setMnemonic('B');

    options.setMnemonic('O');
    miNewStart.setAccelerator(KeyStroke.getKeyStroke('N',KeyEvent.CTRL_MASK + KeyEvent.ALT_MASK));
    miNewStart.setMnemonic('N');
    // Aktionen zuweisen:

    miNewConnect.addActionListener(this);
    miClose.addActionListener(this);
    miNewStart.addActionListener(this);

    // Ende Komponenten

    setVisible(true);
  }

  // Anfang Ereignisprozeduren

  public void actionPerformed (ActionEvent e) {
    if(e.getActionCommand().equals("Beenden")){
     dispose();
    }

    System.out.println("Menüauswahl --> "
    + ((JMenuItem)e.getSource()).getActionCommand());
  }

  // Ende Ereignisprozeduren
  /*public void paint( Graphics g ) {
    g = getGraphics();
    Image img_brett = Toolkit.getDefaultToolkit().getImage("Mühle2.jpg");
    g.drawImage (img_brett, 0,0, 500, 500,this);
  } */
  public static void main(String[] args) {
    new Muehle("Mühle");
  }
}
class jp extends JPanel{
   public void paint( Graphics g ) {
       Image img_brett = Toolkit.getDefaultToolkit().getImage("Mühle2.jpg");
       g.drawImage (img_brett, 0,0, 500, 500,this);
   }
}

Jetzt zeigt er mir eine Hintergrundfarbe an, aber kein Bild. (Hintergrundfarbe habte ich nur eingefügt, da ich sehen wollte, ob das Panel überhaupt drinnen ist)
 

alife

Mitglied
super, danke!

Wenn ich jetzt den Frame mit der Maus ziehe / verschiebe, dann wird der ganze Inhalt schwarz. Ist das normal?
 

sEREAL

Mitglied
sollte eigentlich nicht
bei mir bleibt das Bild jedenfalls immer .. auch wenn ich deine Klassen benutze
 

alife

Mitglied
dürfte an einer Einstellung von mir liegen, am schul-pc hat es auch keine Probleme

/e: nagut, ich hake den thread einmal ab, weil das "eigenliche" Problem ist ja schon behoben.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M JMenuBar im Applet und paint AWT, Swing, JavaFX & SWT 9
C JMenuBar AWT, Swing, JavaFX & SWT 6
K Event Handling Über JMenuBar die diversen Panels anzeigen AWT, Swing, JavaFX & SWT 10
J Swing JMenuItem blockiert JMenuBar AWT, Swing, JavaFX & SWT 2
S JMenuBar bei sichtbarer JGlassPane AWT, Swing, JavaFX & SWT 1
R JMenuBar.setFont tut nix ? AWT, Swing, JavaFX & SWT 1
I Swing JMenuBar auch unten am JFrame? AWT, Swing, JavaFX & SWT 2
A Swing JMenuBar updaten AWT, Swing, JavaFX & SWT 2
kaoZ Swing JMenuBar, Preferences, Properties... und viele andere lustige Dinge (Best Practice) AWT, Swing, JavaFX & SWT 15
Q Designfrage zur JMenuBar AWT, Swing, JavaFX & SWT 6
S JMenuBar wiederverwenden und Eventhandling anpassen AWT, Swing, JavaFX & SWT 4
B Swing JMenuBar unten in der Frame setzen? AWT, Swing, JavaFX & SWT 15
Q Fragen zur JMenuBar & Co. AWT, Swing, JavaFX & SWT 3
M Über eine JMenuBar überprüfen ob ein JCheckBoxMenuItem selectiert ist. AWT, Swing, JavaFX & SWT 4
M JMenuBar, JMenu, JMenuItem wird nicht angezeigt AWT, Swing, JavaFX & SWT 16
G Swing JMenuBar zu weit links und oben dargestellt AWT, Swing, JavaFX & SWT 5
B Swing Dynamische JMenuBar AWT, Swing, JavaFX & SWT 2
J JMenuBar ist geaddet, aber nicht im Frame. Wo ist der Fehler? (inkl. Code) AWT, Swing, JavaFX & SWT 2
D JMenuBar - CardLayout (Klasse anzeigen) AWT, Swing, JavaFX & SWT 3
S JMenuBar Frame Abstand AWT, Swing, JavaFX & SWT 3
H jMenuBar AWT, Swing, JavaFX & SWT 13
NR_EIGHT Swing Probleme mit JMenuBar AWT, Swing, JavaFX & SWT 6
Madlip JMenuBar in JFrame AWT, Swing, JavaFX & SWT 5
B JFrame / JMenuBar => Anfängerprobleme AWT, Swing, JavaFX & SWT 2
R JMenuBar AWT, Swing, JavaFX & SWT 2
S JMenuBar nach 1. Klick deselectieren AWT, Swing, JavaFX & SWT 6
Z JMenuBar wird nicht in JFrame angezeigt AWT, Swing, JavaFX & SWT 2
N JMenuBar verschwindet nicht nach ComponentEvent AWT, Swing, JavaFX & SWT 6
C JMenuBar aktualisieren? AWT, Swing, JavaFX & SWT 2
A Doppelte JMenuBar AWT, Swing, JavaFX & SWT 2
X NullPointerException beim Einfügen einer JMenuBar AWT, Swing, JavaFX & SWT 4
C JMenuBar im JFrame abgehackt AWT, Swing, JavaFX & SWT 7
J Swing JFrame mit JMenuBar, allerdings ohne Erfolg AWT, Swing, JavaFX & SWT 10
K Look&Feel von JMenuBar und Subkomponenten anpassen AWT, Swing, JavaFX & SWT 6
C JMenuBar linksbündig AWT, Swing, JavaFX & SWT 6
C Größe JMenuBar AWT, Swing, JavaFX & SWT 5
KrokoDiehl Swing Actions direkt auf der JMenuBar AWT, Swing, JavaFX & SWT 6
L Swing Kommunikation zwischen JMenuBar und anderen Componenten AWT, Swing, JavaFX & SWT 2
Developer_X Swing JMenuBar Layout AWT, Swing, JavaFX & SWT 2
kniffel JMenuBar aus anderer Klasse AWT, Swing, JavaFX & SWT 10
G Dynamische JMenuBar AWT, Swing, JavaFX & SWT 2
G JMenuBar verschmälern AWT, Swing, JavaFX & SWT 2
M ALT shortcut für JMenuBar deaktivieren AWT, Swing, JavaFX & SWT 3
X JMenuBar überlappt von JPanel :( AWT, Swing, JavaFX & SWT 7
M4nuel Warum überlagert JDesktopPane mein JMenuBar? AWT, Swing, JavaFX & SWT 5
G StatusBar Optik wie JMenuBar; GUI-Erzeugung delegieren AWT, Swing, JavaFX & SWT 2
J JMenuBar in Frame einbauen AWT, Swing, JavaFX & SWT 6
D Canvas über JMenuBar AWT, Swing, JavaFX & SWT 7
P JMenuBar und JToolBar Anzeige Probleme AWT, Swing, JavaFX & SWT 5
C JLabel in JMenuBar frei platzieren AWT, Swing, JavaFX & SWT 2
B JMenubar AWT, Swing, JavaFX & SWT 5
Chris_1980 Makierungsfarbe bei JMenuBar ändern AWT, Swing, JavaFX & SWT 5
L Problem mit JMenuBar AWT, Swing, JavaFX & SWT 5
F JTextField rechts in der JMenuBar AWT, Swing, JavaFX & SWT 4
A gezeichnete Linie verschwindet, wenn ich JMenuBar öffne AWT, Swing, JavaFX & SWT 2
I JMenuBar - Menüs sortieren AWT, Swing, JavaFX & SWT 2
S JMenuBar mit Action belegen! AWT, Swing, JavaFX & SWT 5
M JMenuBar AWT, Swing, JavaFX & SWT 7
B JMenuBar sowie Buttons nach repaint auf JPanel AWT, Swing, JavaFX & SWT 2
T JMenuBar ausblenden lassen aber Hotkeys sollen erhalten sein AWT, Swing, JavaFX & SWT 2
S JMenuBar + update AWT, Swing, JavaFX & SWT 3
M JMenuBar - JMenu mit Tastenkombination aufrufen / anzeigen AWT, Swing, JavaFX & SWT 8
T JMenuBar zweizeilig AWT, Swing, JavaFX & SWT 2
M JmenuBar wird net angezeigt :( AWT, Swing, JavaFX & SWT 6
U komplette JMenuBar deaktivieren? AWT, Swing, JavaFX & SWT 4
S Mausklick reagiert nicht im JMenuBar AWT, Swing, JavaFX & SWT 4
A JMenuBar verschieben. AWT, Swing, JavaFX & SWT 4
T JMenuBar wird nicht richtig angezeigt AWT, Swing, JavaFX & SWT 5
H JFrame, JMenuBar, ScrollBar AWT, Swing, JavaFX & SWT 3
H 2D-Grafik Problem mit Paint AWT, Swing, JavaFX & SWT 1
frager2345 Warum paintComponent hier und nicht paint AWT, Swing, JavaFX & SWT 2
U Was ist der Unterschied von paint und paincomponent? AWT, Swing, JavaFX & SWT 3
L 2D-Grafik Swing paint|paintComponent AWT, Swing, JavaFX & SWT 2
krgewb 2D-Grafik paint-Methode wird zu oft ausgeführt AWT, Swing, JavaFX & SWT 5
S Zeichen ohne paint-Methode AWT, Swing, JavaFX & SWT 2
J Swing Wann brauche ich @Override vor der paint()-Methode? AWT, Swing, JavaFX & SWT 1
G Eine paint-Methode, 2 Welten? AWT, Swing, JavaFX & SWT 3
H Swing + Paint: Mehrere Objekte zeichnen lassen AWT, Swing, JavaFX & SWT 3
A paint-Methode aufrufen AWT, Swing, JavaFX & SWT 13
Xanny 2D-Grafik Beginner! Probleme mit Swing, Gprahics class und paint AWT, Swing, JavaFX & SWT 13
L Berechnungen in paint AWT, Swing, JavaFX & SWT 8
S Grafik: Programm kommt nicht zur paint()-Methode AWT, Swing, JavaFX & SWT 6
W Paint-Methode in anderer Klasse funktioniert nicht AWT, Swing, JavaFX & SWT 7
S 2 Paint-Methoden in einer Klasse ? AWT, Swing, JavaFX & SWT 2
J zwei Paint methoden in einer Klasse AWT, Swing, JavaFX & SWT 3
P Paint und paintComponent AWT, Swing, JavaFX & SWT 12
F 2D-Grafik Was ruft die Paint - Methode auf ? AWT, Swing, JavaFX & SWT 2
S JButton u. Label auf paint-Methode AWT, Swing, JavaFX & SWT 1
S 2 paint-Methoden in einer Klasse ? AWT, Swing, JavaFX & SWT 2
S Paint Methode ohne implements JPanel AWT, Swing, JavaFX & SWT 1
S Farbe ändern bei der paint-Methode AWT, Swing, JavaFX & SWT 5
J ActionListener soll auf paint() Methode zugreifen AWT, Swing, JavaFX & SWT 1
J Problem mit der paint Methode AWT, Swing, JavaFX & SWT 0
Junb 2D-Grafik paint() Methode bugt? AWT, Swing, JavaFX & SWT 2
C JFrame paint ohne hintergrund nutzen AWT, Swing, JavaFX & SWT 6
I Paint-Methode von nicht statischen Objekten aufrufen AWT, Swing, JavaFX & SWT 3
A Swing Paint mit Button Clear den Hintergrund säubern um wieder zeichnen zu können AWT, Swing, JavaFX & SWT 2
K 2D-Grafik Paint - Wie binde ich repaint ein? AWT, Swing, JavaFX & SWT 8
D JSlider "laggt" nach überschreiben der paint methode AWT, Swing, JavaFX & SWT 2
S paint() verzögern AWT, Swing, JavaFX & SWT 9

Ähnliche Java Themen

Neue Themen


Oben