BackgroundImage und absolute Koordinaten für buttons in einem

zoidberger

Mitglied
Hallo mal wieder !

Ich versuche gerade ein Quiz zu programmieren, bzw einfach nur die grafische sache...
ich habe schon viel im Netz gefunden wie ich Backgrounds in ein frame einbinde...
Code:
BackgroundImage frame = new BackgroundImage(new ImageIcon("background.jpg"));
und wie ich absolute Koordinaten für Buttons eingebe...
nur wie verbinde ich dieses ?
Vür absolute Koordinaten brauche ich ein JFrame frame
und ein Container... dann kann ich den Buttons Koordinaten angeben...
aber zusammen geht das nicht... da motzt dann Der Backgroundframe oder irgenwas anderes...
wie würdet ihr eine quizoberfläche gestalten ?
(also so ähnlich wie "wer wird millionär"...mitte die frage, unten 4 buttons mit antworten, rechts joker und oben zeit/punkte)

hoffe ihr könnt mir helfen
 
Moin!
da motzt dann Der Backgroundframe oder irgenwas anderes...

Mit der Fehlerbeschreibung wird hier kaum jemand was anfangen koennen. Ebensowenig kennt hierwahrscheinlich niemand die BackgroundImage Klasse die du da nutzt.
Wenn du mal deinen Code, die Fehlerbeschreibung hier posten und die BackgroundImage Klasse verlinken/posten würdest, könnte man dir bestimmt besser helfen..

*grüssle*
Meinereiner
 
Das ist eben das Problem, ich hab 4 verscheidenen quellcodes, da jedes tutorial im internet immer nur eines behandelt... entweder nuir backgroundimages, oder nur buttons mit absoluten koordinaten, oder nur gridlayouts... ich bekomm das halt nicht in eins... da ist dann meist alles rot unterstrichen ;)
 
Hallo,

wir wollen ja auch nicht die Tutorials sehen, sondern das was du programmiert hast. Du kannst kaum erwarten, dass dir jemand schon ein fertiges JFrame gibt. Da wirst du dir schon selbst ein paar Gedanken machen müssen.
Wenn du sagst, dass du die Sachen einfach zusammen kopiert hast und alles rot ist, hört es sich für mich an, dass du noch nicht soviel oder gar nichts mit Java gemacht hast. Dann ist meine Empfehlung, dass du dir erstmal die Grundlagen (auch in der GUI-Programmierung) mal anschaust.

http://www.galileocomputing.de/openbook/javainsel6/


MFG

zEriX
 
Vielleicht hättest du weniger Code "klauen", dafür dich mehr in die Grundlagen einlesen sollen! Ist nämlich nicht wirklich schwer.
Hier mal ein Beispiel mit wahlweise Null oder Gridlayout. Wobei das Layout voellig irrelavant ist, wenn es um Hintergrundbilder in Frames geht..
Code:
public class TestFrame extends JFrame{
    private Image img;
    JLabel label = null;
    
    public TestFrame() {
        img = new ImageIcon( "C:/img.jpg" ).getImage() ;
        initComponents();
        setSize(400,400);
        initFrame();
        
    }
    
    public void initFrame(){
        JPanel panel = new JPanel(){
            protected void paintComponent(Graphics g){
                g.drawImage(img, 0, 0, null);
                 super.paintComponent(g);
            }
    };
    panel.setOpaque( false );
        //panel.setLayout(null);
        panel.setLayout(new GridLayout(1,1));
        this.setContentPane(panel);
        label = new JLabel("Der Text des labels");
        label.setBounds(10,10, 200, 80);
        getContentPane().add(label);
    }
    public void paint( Graphics g ) {
        g.drawImage( img , 50 , 50 , null) ;
        super.paint(g);
        
        
    }
    
    
    public static void main(String args[]) {
        new TestFrame().show();
        
    }

*grüssle*
MeinerEiner
 
Also, ich hab wirklich schon viel... okay viel nicht, aber einiges in java gemacht.
Mit swing leider nochnicht, aber ich hab mich in den letzten tagen gut eingelesen.
Ich kenne die unterscheide der einzelnen layouts und wie man icons/backgrounds einbindet, nur wenn ich das dann versuche gehts nicht...
ich habe heute mal den background weggelassen und mich mal nur mit den buttons beschäftigt.
wie ihr oben gelesen habt, soll das ein quiz werden.
Bis jetzt hab ich nurmal grafische seite gemacht, die funktionen kommen später.

hier der code:

Code:
package layout;

import java.awt.Container;
import java.awt.Dimension;
import javax.swing.*;
import java.net.URL; 

public class Entry {
    public static void addComponentsToPane(Container pane) {
        pane.setLayout(null);
        
        String ans[] = new String[4];
        ans[0] = "antwort1";
        ans[1] = "antwort2";
        
        URL iconPath1 = Entry.class.getResource( "joker1.gif" );
        URL iconPath2 = Entry.class.getResource( "joker2.gif" );
        
        JButton b1 = new JButton( ans[0] );
        JButton b2 = new JButton( ans[1] );
        JButton b3 = new JButton( "three" );
        JButton b4 = new JButton( "four" );
        JButton joker1 = new JButton();
        JButton joker2 = new JButton();
        Icon jokerIcon1 = new ImageIcon( iconPath1 );
        Icon jokerIcon2 = new ImageIcon( iconPath2 );
        
        pane.add( b1 );
        pane.add( b2 );
        pane.add( b3 );
        pane.add( b4 );
        pane.add( joker1 );
        pane.add( joker2 );
        
        
        Dimension size = b1.getPreferredSize();
        b1.setBounds( 30, 420, 350, 40 );
        
        size = b2.getPreferredSize();
        b2.setBounds( 410, 420, 350, 40 );
        
        size = b3.getPreferredSize();
        b3.setBounds( 30, 480, 350, 40 );
        
        size = b4.getPreferredSize();
        b4.setBounds( 410, 480, 350, 40 );
        
        size = joker1.getPreferredSize();
        joker1.setIcon( jokerIcon1 );
        joker1.setBounds( 710, 170, 70, 70 );
        
        size = joker2.getPreferredSize();
        joker2.setIcon( jokerIcon2 );
        joker2.setBounds( 710, 260, 70, 70 );
        
        
        
    }

    //Creates the GUI
    private static void createAndShowGUI() {
        //Create and set up the window.
        JFrame frame = new JFrame("Entry");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //Set up the content pane.
        addComponentsToPane(frame.getContentPane());

        //Size and display the window.
        
        frame.setSize( 800, 600);
        frame.setVisible(true);
    }

    public static void main(String[] args) {

    	javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }
}

Da soll dann noch n textfeld in die mitte wo später die fragen aus ner xml datei reinkommen und ja... oben noch n timer... aber das interessiert mich grad nicht, sondern nur der background :)
Mit den Icons hab ichs ja auch hinbekommen !
 
Eigentlich hättest du nur mein Beispiel mit deinem zusammenführen müssen. wäre eigentlich net sehr schwer gewesen:
Code:
 private static void createAndShowGUI() {
        //Create and set up the window.
        JFrame frame = new JFrame("Entry");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         final Image img = new ImageIcon( "C:/img.jpg" ).getImage() ;
         JPanel panel = new JPanel(){
            protected void paintComponent(Graphics g){
                g.drawImage(img, 0, 100, null);
                 super.paintComponent(g);
            }
        };
        panel.setOpaque( false );
        frame.setContentPane(panel);
        //Set up the content pane.
        addComponentsToPane(frame.getContentPane());

        //Size and display the window.
        
        frame.setSize( 800, 600);
        frame.setVisible(true);
    }

Was noch fehlt, ist die einzelnen Buttons auch noch auf setOpaque(false) zu setzen..

*grüssle*
MeinerEiner
 
Ja genau damit hatte ich ja Probleme ;)
Weil das mit den Backgrounds wird nirgens so richtig eindeutig erklärt... ioch hab jetzt mindestens 3 verschiedene möglichkeiten gesehn das zu machen ;)
Aber deine war die einzige die geklappt hat ! also du hast es mir ja schon fertig gepostet ;)
viiielen dank !
ich hab noch die größe ans fenster angepasst mit der zeile
Code:
g.drawImage(img, 0, 0, getSize().width, getSize().height, this);
und nun ist es perfekt !

Big Thx
 
Zurück