textfelder lassen sich nicht anwählen

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
hi

ich habe bei meinem programm labels als hintergrundbilder verwendet und null als layoutmanager gewählt.

nachdem ich checkboxen anwähle, sollen auf den labels textfelder auftauchen. das tun sie auch nur leider kann ich sie nicht ändern und ich kann sie auch nicht focusen.

liegt das daran, dass sie auf einem label (also bild) liegen, oder dass ich sie auf set.Opaque( false ) gesetzt habe, oder daran, dass sie am anfang unsichtbar sind und erst später auftauchen( set.Visible( false/true) )?

hab schon im forum gesucht, aber noch nichts gefunden dass mir helfen würde. mit mouseevents habe ich es auch schon probiert, ging auch nicht.

kann ich vielleicht die textelder auf ein anderes pane legen, das näher ist? würde das gehen und wenn ja, wie?
 
Also, nachdem du die JCheckBox angewählt hast, soll ein JTextField auf dem Bild erscheinen, richtig?
Dann musste für das Bild ein JPanel nehmen und kein JLabel.
Und das Bild per paintComponent zeichnen.
 
wie kann ich mein bild mit paintComponent zeichnen?
bis jetzt sind meine bilder ImageIcon, die methode braucht allerdings Graphic.
wie kann ich meine eigenen bilder als Graphic importieren?
 
Code:
/* 
* HintergrundTest.java 
*/ 
import java.awt.*; 
import java.awt.event.*; 
import java.awt.image.*; 
import java.net.*; 
import javax.imageio.*; 
import javax.swing.*; 
public class HintergrundTest extends JFrame { 
    public HintergrundTest() { 
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
        setSize(300,210); 
        setLocationRelativeTo(null); 
        Background background = new Background(); 
        getContentPane().add(background); 
        background.add(new JTextField("TEST"));
    } 
    public static void main(String args[]) {new HintergrundTest().setVisible(true);} 
    class Background extends JPanel{ 
        public Background(){ 
            System.out.println("Loading image, please wait..."); 
            try{ 
                URL url = new URL( 
                    "http://images.thetimes.co.uk/TGD/picture/0,,223788,00.jpg"); 
                image = ImageIO.read(url); 
                System.out.println("Image loaded"); 
            }catch(Exception ex){ 
                ex.printStackTrace(); 
            } 
        } 
        public void paintComponent(final Graphics g) { 
            super.paintComponent(g); 
            g.drawImage(image,0,0,null); 
        } 
        private BufferedImage image; 
    } 
}
 
vielen dank, damit ist mir sehr geholfen.
funktioniert das eig auch, wenn die bilder im projektordner liegen?
was muss ich dann anstelle von url nehmen?
 
leider bekomme ich jetzt immer noch java.lang.NullPointerException wenn ich das panel nicht von anfang an auf visible setze, sondern erst später erscheinen lassen möchte.
ausblenden mit setVisible(false) funktioniert dann auch nicht und die textfelder lassen sich wieder nicht anwählen :autsch:

vorher befindet sich an der stelle ein Label, das dann verschwindet, wenn ich die checkbox auswähle.

wenn ich das Panel von anfang an auf visble setze, gibt es keine fehler.
 
wenn ich das background panel mit setVisible ändern im nachhinein will, also bei beidem bei true und false.
 
Wenn eine Referenz null ist dann ist ihr noch kein richtiger Wert zugewiesen worden, oder ihr Wert wurde wieder auf null gesetzt, oder die Referenz wurde doppelt deklariert und nur eine davon richtig initialisiert.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben