ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
1299
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
  1. #1
    Sascha1122 ist offline Grünschnabel
    Registriert seit
    May 2009
    Beiträge
    2
    Hallo,

    ich habe folgendes Problem: Ich verwende ein Bild als Hintergrund, aber ich weiß nicht wie ich es auch Hintergrund bekomme. Also Panels und Buttons werden nicht darauf gebracht. Entweder sie sind gar nicht zu sehen oder man muss erst mit der Maus drüber fahren um sie zu sehen.

    Ich habe es probiert indem ich den Hintergrund in ein Panel gebe und das darüberliegende Panel auf "durchsichtig " setze mir "setOpalse(false)"

    Die andere Möglichkeit ist mit der Paint-methode.

    Funktioniert beides nicht so richtig =(

    Hat jemand eine Idee?

    public class QuizLayout extends JFrame {
    Vector v = new Vector();

    // Anlegen der GUI Elemente
    Container cp = this.getContentPane();
    Image img = Toolkit.getDefaultToolkit().getImage("wwm.jpg");
    JLabel background = new JLabel( new ImageIcon(img), JLabel.CENTER);
    JLabel headline = new JLabel("Das JavaQuiz", JLabel.CENTER);
    JLabel question = new JLabel("Hier steht die Frage", JLabel.CENTER);


    JPanel ctnpnl = new JPanel();
    JPanel anspnl = new JPanel();
    ButtonGroup bg = new ButtonGroup();
    JRadioButton[] answers = new JRadioButton[4];

    JPanel btnpnl = new JPanel();
    JButton nextbtn = new JButton("Quiz starten");
    JButton backbtn = new JButton("Letzte Frage");
    Score score = new Score(this);
    Events eventhandling = new Events(this, score);

    JMenuBar mb = new JMenuBar();
    JMenu menu = new JMenu("Anmelden");
    JMenuItem mItem1 = new JMenuItem("Anmelden");

    // public void paint(Graphics g) {
    // Dimension scr = Toolkit.getDefaultToolkit().getScreenSize();
    // Image img = Toolkit.getDefaultToolkit().getImage("wwm.jpg");
    // g.drawImage(img,0,0,scr.width,scr.height,this);
    // }
    public QuizLayout(Vector v_) {
    this.v = v_;
    this.setTitle(headline.getText());
    this.setSize(500,500);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setLocation(300,200);
    this.setJMenuBar(mb);

    mb.add(menu);
    menu.add(mItem1);

    headline.setVerticalAlignment(JLabel.CENTER);
    // headline.setOpaque(false);
    headline.setFont(new Font("Arial", Font.BOLD, 20));

    //answerpanel
    anspnl.setLayout(new GridLayout(2,2));
    // anspnl.setOpaque(false);

    for (int k=0;k<4;k++){
    answers[k] = new JRadioButton("RadioButton");
    anspnl.add(answers[k]);
    bg.add(answers[k]);
    }
    ctnpnl.setLayout(new GridLayout(2,1));
    ctnpnl.add(question);
    ctnpnl.add(anspnl);
    cp.add("North",background);
    cp.add("North",headline);
    cp.add("Center",ctnpnl);
    btnpnl.setLayout(new GridLayout(1,2));
    btnpnl.add(backbtn);
    btnpnl.add(nextbtn);
    cp.add("South",btnpnl);
    addListener();
    }
     

  2. #2
    Larrywayn ist offline Mitglied Silber
    Registriert seit
    May 2009
    Ort
    Berlin
    Beiträge
    60
    Erstmal ein paar Dinge:
    1. Code Tags wären echt Etwas feines
    2. Fehlt einiges um den Code auszuführen o.o
    3. Solltest du unbedingt darauf achten, sauberer zu programmieren, das alles sehr durcheinander.
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    
    import java.awt.BorderLayout;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.GridLayout;
    import java.awt.Image;
    import java.awt.Toolkit;
    import java.util.Vector;
     
    import javax.swing.ButtonGroup;
    import javax.swing.JButton;
    import javax.swing.JComponent;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JPanel;
    import javax.swing.JRadioButton;
     
    public class QuizLayout extends JFrame 
    {
        private static final long serialVersionUID = 1L;
        Vector v;
        Image img;
        JLabel headline,question;
        JPanel ctnpnl,anspnl,btnpnl;
        JRadioButton[] answers;
        JButton nextbtn,backbtn;
        ButtonGroup bg;
        JMenuBar mb;
        JMenu menu;
        JMenuItem mItem1;
        JComponent cp;
        QuizLayout(Vector v)
        {   
            super();
            this.v = v;
            cp = new JComponent()
            {
                private static final long serialVersionUID = 1L;
     
                public void paint(Graphics g) 
                {
                    for(int i = 0; i < getWidth(); i+=img.getWidth(null))
                    {
                        for(int j = 0; j < getHeight(); j+=img.getHeight(null))
                        {
                            g.drawImage(img,i,j,this);
                        }
                    }
                    super.paint(g);
                } 
            };
            img = Toolkit.getDefaultToolkit().getImage("a.png");
            headline = new JLabel("Das JavaQuiz", JLabel.CENTER);
            question = new JLabel("Hier steht die Frage", JLabel.CENTER);
            ctnpnl = new JPanel();
            anspnl = new JPanel();
            btnpnl = new JPanel();
            answers = new JRadioButton[4];
            bg = new ButtonGroup();
            nextbtn = new JButton("Quiz starten");
            nextbtn.setOpaque(false);
            backbtn = new JButton("Letzte Frage");
            backbtn.setOpaque(false);
            mb = new JMenuBar();
            menu = new JMenu("Anmelden");
            mItem1 = new JMenuItem("Anmelden");
            configLayout();
        }
        
        private void configLayout()
        {
            this.setTitle(headline.getText());
            this.setSize(500,500);
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setLocation(300,200);
            this.setJMenuBar(mb);       
            this.setContentPane(cp);
     
            mb.add(menu);
            menu.add(mItem1);
            headline.setVerticalAlignment(JLabel.CENTER);
            headline.setFont(new Font("Arial", Font.BOLD, 20));
            anspnl.setLayout(new GridLayout(2,2));      
            anspnl.setOpaque(false);
            for (int k=0;k<4;k++)
            {
                answers[k] = new JRadioButton("RadioButton");
                answers[k].setOpaque(false);
                anspnl.add(answers[k]);
                bg.add(answers[k]);
            }
            ctnpnl.setLayout(new GridLayout(2,1));
            ctnpnl.add(question);
            ctnpnl.add(anspnl); 
            ctnpnl.setOpaque(false);    
            btnpnl.setLayout(new GridLayout(1,2));
            btnpnl.setOpaque(false);
            btnpnl.add(backbtn);
            btnpnl.add(nextbtn);
            
            cp.setLayout(new BorderLayout());
            cp.add(headline,BorderLayout.NORTH);
            cp.add(ctnpnl,BorderLayout.CENTER);
            cp.add(btnpnl,BorderLayout.SOUTH);
            super.setVisible(true);
        }
    }
    Hab es mal für mich übersichtlicher gemacht. Ist zwar auch noch recht dreckig der Code, aber egal.
    Musst es für dich dementsprechend wieder anpassen (Pfad zum Bild + die Klassen, die ich rauswerfen musste, weil ich sie nicht hatte). Hab das Hintergrundbild mal kacheln lassen. Man kann es auber auch über die gesamte Größe zerren, sieht nur Pixelig aus dann find ich.
    Was ich gemacht hab: einfach die Paint() Methode der ContentPane überschrieben + super.paint(g); damit auch der Rest gezeichnet wird =)
    Mfg hoffe das hilft dir etwas
    Geändert von Larrywayn (15.05.09 um 14:07 Uhr) Grund: super(); vergessen O:
     
    http://larrywayn.pytalhost.eu xD
    Friss zeurst, sonst wirst du gefressen.

  3. #3
    Sascha1122 ist offline Grünschnabel
    Registriert seit
    May 2009
    Beiträge
    2
    Vielen Dank
    funktioniert super!

    Bin noch blutiger Anfänger, daher auch der unschöne Code und die Unerfahrenheit mit der Darstellung des Quellcode im Forum.
     

Thema nicht erledigt

Ähnliche Themen

  1. Bild als Hintergrund für die GUI
    Von merTii im Forum Java Grundlagen
    Antworten: 15
    Letzter Beitrag: 02.01.11, 16:38
  2. Bild als Hintergrund
    Von ivory-martin im Forum CSS
    Antworten: 2
    Letzter Beitrag: 22.10.07, 19:35
  3. Hintergrund Bild
    Von FlyingBall im Forum CSS
    Antworten: 3
    Letzter Beitrag: 09.07.07, 11:51
  4. Hintergrund bild
    Von ArneZ im Forum Cinema 4D
    Antworten: 2
    Letzter Beitrag: 07.12.06, 12:59
  5. Über ein Hintergrund Bild ein Bild legen
    Von Orphelina im Forum CSS
    Antworten: 21
    Letzter Beitrag: 31.03.05, 09:27

Stichworte