Warum wird das JLabel nicht angezeigt?

Ich möchte, damit es später nicht so viel auf einmal wird die verschiedenen Bestandteile des JFrames in mehrer Klassen schreiben. In diesem Fall habe ich ein Jframe, in dem ein JPanel geladen wird, in dem ein JLabel ist. Wenn ich das Programm allerdings ausführe, wird das JLabel nicht angezeigt.

Bilder: https://drive.google.com/drive/folders/1CoH93gGGE0h0hOfwpI5dMur3USVmz4sz?usp=sharing

Hier mal die Klassen:

Main.java

import javax.swing.JFrame;

public class Main {

	public static void main(String[] args) {
		JFrame frame = new DiyLoopFrame();
	}
}

DiyLoopFrame.java (das JFrame)

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class DiyLoopFrame extends JFrame {
	
	//constructor
	public DiyLoopFrame() {
		setSize(880, 650);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setLocationRelativeTo(null); 
		setTitle("DiyLoop");
		setResizable(false);
		setLayout(null);
		JPanel fc = new FrameControls();
		
		//components
		add(fc); //add FrameControls
		addKeyListener(new KeyHandler()); //get Keys
		
		//loading complete!
		setFocusable(true); //set focus to jframe
		setVisible(true); //make visible
	}
}

FrameControls.java (das JPanel)

import java.awt.Font;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class FrameControls extends JPanel {
	
	private JLabel label_schriftart;
	private JLabel label_clickoptions;
	
	public FrameControls() {
		//add components
		initComponents();
		add(label_clickoptions);
		
		//loading complete!
		setVisible(true);
	}
	
	private void initComponents() {
		//schriftart
		label_schriftart = new JLabel("");
		Font schriftart = (label_schriftart.getFont().deriveFont(Font.BOLD, 15));
		
		//label clickoptions
		label_clickoptions = new JLabel("click options");
		label_clickoptions.setFont(schriftart);
		label_clickoptions.setBounds(5, 5, 500, 11);
	}
}

.

Computer, Technik, java programmieren, Python, Swing, eclispe, progrmaming
3 Antworten
Java Swing Textfeld geht nicht?

Hey Leute, ich helfe gerade einer Freundin mit einem Projekt und möchte in einen Gui ein Textfeld einfügen aber irgendwie geht das nicht(es gibt auch keine Fehlermeldung) der Spinner den ich erstellt habe funktioniert aber. Unten ist mein Code. Es geht um das Textfeld "Deutsch".

Ich hoffe mir kann wer helfen :)

package main;
import java.awt.Color;
import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JSpinner;
import javax.swing.JTextField;
import javax.swing.SpinnerModel;
import javax.swing.SpinnerNumberModel;
@SuppressWarnings("serial")
public class gui extends JFrame {
 Container c;
 static JLabel beschriftung;
 static SpinnerModel model = new SpinnerNumberModel(0, 0, 15, 1);
 public gui() {
  c = getContentPane();
  c.setLayout(null);
 }
 public static void main(String[] args) {
  gui fenster = new gui();
  // Var.jf1 = new JFrame();
  fenster.setTitle("test");
  fenster.setSize(Var.screenwidth, Var.screenheight);
  fenster.setVisible(true);
  fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  JTextField Deutsch = new JTextField();
  fenster.add(Deutsch);
  Deutsch.setBackground(Color.BLUE);
  Deutsch.setForeground(Color.RED);
  Deutsch.setText("test");
  Deutsch.setLocation(40, 80);
  Deutsch.setVisible(true);
  
  JSpinner ds1 = new JSpinner(model);
  ds1.setBounds(20, 20, 40, 40);
  fenster.add(ds1);
  ds1.setLocation(100, 80);
  }
}
Computer, Java, Programmierung, Swing, Programmierung Java, Java Swing
2 Antworten
Java GridBagLayout Komponenten hinzufügen?

Hallo ... ich habe vor in einer Java Swing-Anwendung zur Laufzeit (anhängig von der Benutzereingabe) einige Komponenten zu einem GridBagLayout in einem JPanel, welches sich wiederum in einem JScrollPane befindet hinzuzufügen. Nun sieht der Code so aus:

JPanel panel = new JPanel();
JScrollPane scrollPane.setViewportView(panel);
GridBagLayout gbl = new GridBagLayout();
gbl.columnWidths = new int[]{0, 0, 0};
gbl.rowHeights = new int[] {0, 0, 0, 0, 0, 0, 0};
gbl.columnWeights = new double[]{0.0, 1.0, Double.MIN_VALUE};
gbl.rowWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE};
panel.setLayout(gbl_panel);

Das hat mir der Java-WindowBuilder zusammengeschrieben. Zur info ... ich habe danach 5 Labels und daneben Textboxen hinzugefügt und mir wurde das so in der Art gezaubert (halt nur 5 mal und noch mit Textboxen):

JLabel lbl = new JLabel("Irgendwas");
GridBagConstraints gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.EAST;
gbc.insets = new Insets(0, 0, 5, 5);
gbc.gridx = 0;
gbc.gridy = 0;
panel.add(lbl, gbc);

Wenn ich nun aber dynamisch eine Komponente hinzufüge, mit

GridBagConstraints gbc = new GridBagConstraints();
...
panel.add(label, gbc);

dann wird das neu Label irgendwo in der Mitte zwischen dem letzten Label und dem unteren Rand ders Panels angezeigt. (hab auch schon panel.revalidate/repaint) aufgerufen). Aber ich hätte das gern gleich unter dem letzten Label angezeigt. Ich glaube das liegt an der Zeile

gbl.rowWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE};

Da wird scheinbar die Zeilenanzahl festgelegt oder? Ich weiß es nicht :D. Also wie kann ich es nun hinkriegen, dass das Label ordnungsgemäß angezeigt wird?

Ich würde mich über Hilfe sehr freuen :)

Danke im Voraus

Computer, programmieren, Java, Swing, Grafikprogrammierung
1 Antwort
Bitte helft mir zu verstehen warum mein Code das macht?

Ich versuche jetzt schon seit Stunden zu verstehen warum mein Code das macht, und habe auch keine Ahnung wie ich das fixen kann. Und zwar versuche ich mit einer for-Schleife ein 4 x 4 Feld aus JButtons zu erzeugen. Das Problem ist, dass jedes mal der letzte Button nicht seine höhe und breite einhält sondern den kompletten Bildschirm bedeckt (s. ganz unten im Code).

Falls ihr wisst woran das liegen könnte und wie ich es fixe, dann schreibts unten rein.

CODE(für eclipse):

import java.awt.Toolkit;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.;

import java.awt.;

public class FENSTER extends JFrame implements ActionListener{

private JButton spielen;

private JButton highscore;

public String name;

public static String title;

public static boolean fenster_b = true;

public static boolean spiel_b = false;

static JButton[] buttons;

public static JFrame spiel;

public static void main(String[] args)

{

Hauptmenu();

}

public static void Hauptmenu()

{

FENSTER fenster = new FENSTER(title);

fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

fenster.setSize(850,850);

fenster.setIconImage(Toolkit.getDefaultToolkit().getImage(FENSTER.class.getResource("/bilder/Icon.jpg")));

fenster.setLocationRelativeTo(null);

fenster.setLayout(null);

fenster.setVisible(fenster_b);

}

public FENSTER(String titel)

{

super(titel);

spielen = new JButton("SPIELEN");

spielen.setBounds(325, 233, 200, 100);

spielen.addActionListener(this);

add(spielen);

highscore = new JButton("BESTENLISTE");

highscore.setBounds(325, 466, 200, 100);

highscore.addActionListener(this);

add(highscore);

}

public void NameEingabe()

{

name = JOptionPane.showInputDialog("Gib hier deinen Nicknamen ein!");

}

public static void SpieleFenster()

{

spiel = new JFrame(); 

spiel.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

spiel.setSize(840, 865);

spiel.setLocationRelativeTo(null);

spiel.setVisible(spiel_b);

drawButtons();

}

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

if (e.getSource() == spielen)

{

NameEingabe();

if(name != null)

{

fenster_b = false;

spiel_b = true;

SpieleFenster();

}

}

if (e.getSource() == highscore)

{

//HighscoreFenster();

}

}

//HIER LIEGT DAS PROBLEM

private static void drawButtons()

{

buttons = new JButton[16];

for(int i = 0; i<16; i++)

{

if(i<4)

{

buttons[i] = new JButton("");

buttons[i].setBounds(i200 +10, 10,200,200);

spiel.add(buttons[i]);

}

else if(i<8)

{

buttons[i] = new JButton("");

buttons[i].setBounds((i-4)200 +10, 210,200,200);

spiel.add(buttons[i]);

}

else if(i<12)

{

buttons[i] = new JButton("");

buttons[i].setBounds((i-8)200 +10, 410,200,200);

spiel.add(buttons[i]);

}

else if(i<15)

{

//BREAK POINT

buttons[i] = new JButton("");

buttons[i].setBounds((i-12)200 +10, 610,200,200);

spiel.add(buttons[i]);

}

}

}

}

Java, Eclipse, Informatik, Swing
2 Antworten
JInput Dialog wird zweimal aufgerufen, aber beim zweiten mal passiert nichts?
    static JFrame jFrame = new JFrame();
    static JTextArea jArea = new JTextArea();
    static JButton jButton = new JButton("Schließen");

    public static void run(Modis Mode) {

        if (Mode.equals(Modis.verschlüsseln)) {

            String Text = JOptionPane.showInputDialog("Zu verschlüsselnden / entschlüsselnden Text eingeben");
            String keyStr = JOptionPane.showInputDialog("Bitte den Schlüssel eingeben");

            byte[] key = (keyStr).getBytes("UTF-8");

            MessageDigest sha = MessageDigest.getInstance("SHA-256");
            key = sha.digest(key);

            key = Arrays.copyOf(key, 16);

            SecretKeySpec secretKeySpec = new SecretKeySpec(key, "AES");

            Cipher cipher = Cipher.getInstance("AES");
            try {
                cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
            } catch (InvalidKeyException e) {
                jArea.append("Fehler beim generieren des Keys\n");
            }
            byte[] encrypted = cipher.doFinal(Text.getBytes());

            BASE64Encoder myEncoder = new BASE64Encoder();
            String geheim = myEncoder.encode(encrypted);

            Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard();
            StringSelection selection = new StringSelection(geheim);
            c.setContents(selection, null);

            jArea.append(geheim + "\n");
        } else if (Mode.equals(Modis.entschlüsseln)) {

            String Text = JOptionPane.showInputDialog("Zu verschlüsselnden / entschlüsselnden Text eingeben");
            String keyStr = JOptionPane.showInputDialog("Bitte den Schlüssel eingeben");
            ;

            byte[] key = (keyStr).getBytes("UTF-8");

            MessageDigest sha = MessageDigest.getInstance("SHA-256");
            key = sha.digest(key);

            key = Arrays.copyOf(key, 16);

            SecretKeySpec secretKeySpec = new SecretKeySpec(key, "AES");

            BASE64DecodermyDecoder = new BASE64Decoder();
        byte[] crypted = myDecoder.decodeBuffer(Text);

        Cipher cipher = Cipher.getInstance("AES");
        try {
            cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
        } catch (InvalidKeyException e) {
            jArea.append("Fehler beim generieren des Keys\n");
        }
        byte[] cipherData2 = cipher.doFinal(crypted);
        String erg = new String(cipherData2);

        Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard();
        StringSelection selection = new StringSelection(erg);
        c.setContents(selection, null);

        jArea.append(erg + "\n");
    }

    jButton.setToolTipText("Schließe dieses Fenster");
    jButton.setBounds(630, PosY.Erste.getValue(), 130, 50);
    jButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(java.awt.event.ActionEvent arg0) {
            jFrame.setVisible(false);
        }
    });

Ein Zeilen musste ich für gf.net leider entfernen aber die dienten nur der definition von Jtextarea und dem Jframe, so und mein Problem ist jetzt das sobald ich den Entschlüsseln Teil aufrufe das input field 2x gezeigt wird aber beim zweiten mal diese nichts bewirken, wie kann ich verhindern das der input Dialog 2x mal kommt?

Java, Swing
2 Antworten
Dreiklang Akkorde als 7er Akkorde spielen (Jazz, Soul, RnB etc)?

Gude an die Musik Meister,

Ich bin der Theorie nicht so mächtig und die Erklärungen im Netz sind mir leider zu hoch. habe versucht mich da mit auseinanderzusetzen. aber ich habe eine spezielle Frage und vielleicht kann mir einer helfen.

Ich will kein Jazz/Soul Gitarrist werden. Jedoch wollen wir in unsere Coverband Chartbreaker leicht answingen. Da wir in Hotelbars und edlere Clubs spielen und das gut zum Ambiete passt.

Sooo jetzt wollte ich wissen. Kann man einfach einen Song den man mit den normalen Dreiklangakkorden kennt einfach mit 7er Akkorden spielen?

also zb ein Emoll dann einfach als Emoll 7 spielen? usw.

Ich frage das so blöd weil die 4 Klangakkorde einfach anders klingen. mich irritiert der Sound und kann ihn so nicht ganz einordnen, da ich auch nicht singe kann ich nicht testen ob das einfach klappt.

Natürlich ist es nicht mit getan einfach die 7er Akkorde zu spielen und es kommt Jazz raus. das ist mir bewusst. Nur geht es mir erstmal um eine Grundstruktur damit ich als Rhtm Gitarrist weiß welche Griffe ich brauche. um dann darauf aufzubauchen. mit dem chromatischen Spielerein usw würde ich mich dann erst befassen.

Ich habe bisjetzt nie 7er Akkorde genutzt und höre zu wenig die Musik. Komme eben aus der Rock Ecke und kann deswegen diese...Septime? nicht richtig einordnen.

Hoffe man lyncht mich jetzt nicht und kann mir helfen^^

PS: falls ihr gute Tutorials für Soul,Rnb, Swing, Jazz kennt, gerade rhtm Gitarre. immer nur her damit.

Musik, Akkorde, RnB, Jazz, soul, Swing, Theorie
2 Antworten
Wie kann ich in Java ein JLabel vor ein anderes stellen?

Ich versuche hierbei ein JLabel mit dem Namen Rechteck zu erzeugen, welches einen grünen Hintergrund hat. Danach will ich in einem bestimmten Zeitabstand immer 10 JLabels mit dem namen Zelle darüber legen, was aber nicht funktioniert. Wenn man den Befehl "Rechteck.setOpaque(true);" auskommentiert, kommt mein gewünschtes Ergebnis raus, nur das das Feld eben noch grün sein sollte.

Hier ist mein vereinfachter Code: (die Klassen Zellen,Zelle und Test habe ich hier einfach mal weggelassen)

package Main;

import java.awt.Color;

public class GUI extends JFrame{

private static final long serialVersionUID = 1L;

LinkedList<Zelle> GUIZellen = new LinkedList<Zelle>();

JLabel Rechteck= new JLabel();
JPanel Panel = new JPanel();

public GUI(){
    super();
    main();
}

public void main(){
    this.setTitle("Zellen");
    this.setSize(500,900);
    this.setLayout(null);
    this.setLocation(1600,10);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Panel.setSize(500,900); 
    Panel.setLayout(null);
    
    Rechteck.setBounds(22,180,441,661);
    Rechteck.setBackground(Color.green);
    Rechteck.setOpaque(true);
    Rechteck.setBorder(BorderFactory.createLineBorder(Color.black));
    Panel.add(Rechteck);

    this.add(Panel);
    this.setVisible(true);
}

public void GUIZelle(){

    int x=0;
    while(x<28||x>440){
        x=(int)((Math.random()) * 440 + 1);
    }
    
    int y=0;
    
    while(y<190||y>830){
        y=(int)((Math.random()) * 830 + 1);
    }
    
    GUIZellen.add(new Zelle(x,y));
    neueZelle();
}

public void neueZelle(){
    JLabel Zelle = new JLabel();
    Zelle.setBounds(GUIZellen.getLast().getX(), GUIZellen.getLast().getY(), 10, 10);
    Zelle.setBorder(BorderFactory.createLineBorder(Color.black));
    Zelle.setOpaque(true);
    Panel.add(Zelle);
    
}

}


package Main;

import java.awt.Graphics;
import java.util.Timer;
import java.util.TimerTask;

public class Ticker {

public Ticker(){
    final Timer timer = new Timer();

    timer.schedule(
        new TimerTask() {
            public void run() {
                BeiTick();
            }
       }, 0L, 1000L
     );
}

public void BeiTick(){
    Test.z.setZellenAnz(Test.z.getZellenAnz()+1);
    if(Test.z.getZellenAnz() % 1==0){
        for(int i=0;i<10;i++){
            Test.g.GUIZelle();
        }
        
    }
}
}
Java, vor, Label, Zellen, Code, Eclipse, Swing, API, gui
2 Antworten

Meistgelesene Fragen zum Thema Swing

Welche Melodie ist im Song "Oder nicht" von Kontra K zu hören?

3 Antworten

Sehr bekannte Swing Songs?

4 Antworten

Moderne Lieder für Boogie gesucht

1 Antwort

Ist diese F-Dur Bluestonleiter richtig?

3 Antworten

Wie erkennt man swing feeling?

1 Antwort

wie bringe ich meine Freundin dazu mit mir einen swingerclub zu besuchen?

13 Antworten

Welche Lieder sind ein "muss" für Big Band?

7 Antworten

Könntet ihr mir ein paar bekannte Swing Vertreter oder Interpreten nennen?

4 Antworten

Merkmale des Swing(Jazz)

2 Antworten

Swing - Neue und gute Antworten