wie kann ich in eine Benennung eines JButtons eine Variable einbauen?

jojoge

Mitglied
Hallo Programmierer*innen,
ich versuche seit mehreren Stunden einen JButton mit Hilfe einer Variable zu benennen.

Das habe ich folgender Maßen programmiert bekomme jedoch ständig eine Fehlermeldung. "not a Statement"


public void FarbenUndButtonsErstellen(int i//Position der Flagge in der Datenbank
){

for(int j=0; j++; j<=6){
if(Datenbank.gets(i,j)!=""){
String[]Farben=new String[6];
Farben[j]=Datenbank.gets(i,j);
JButton "Button"+j= new JButton();
"Button"+j.setBackground(Farben[j]);
mPane.add("Button"+j);
AnzahlFraben++;
}
}
mPanel.setLayout(new Gridlayout(1,AnzahlFarben+2,5,5));

}

hat jemand vorschlage?
 
Mit der Methode setText(String)
Java:
public static void main(String args[]) {
    JFrame frame = new JFrame();
    frame.setTitle("Title");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JButton button = new JButton();
    button.setText("Hello, World!");
    frame.getContentPane().add(button, BorderLayout.CENTER);
    frame.setSize(200, 100);
    frame.pack();
    frame.setVisible(true);
    frame.show();
  }
Oder du meinst setName(String):
Java:
private JButton createButton(final String name) {
  final JButton button = new JButton(getText(name));
  button.setName(name);
  return button;
}
 
Das kann irgendwie nicht funktionieren:
Java:
if(Datenbank.gets(i,j)!=""){
String[]Farben=new String[6];
Farben[j]=Datenbank.gets(i,j);

Du erstellst immer ein neues Array und setzt den Wert an Index j, ansonsten ist das Array leer. Für den gezeigten Code benötigst du gar kein Array für Farben.
 
Mit der Methode setText(String)
Java:
public static void main(String args[]) {
    JFrame frame = new JFrame();
    frame.setTitle("Title");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JButton button = new JButton();
    button.setText("Hello, World!");
    frame.getContentPane().add(button, BorderLayout.CENTER);
    frame.setSize(200, 100);
    frame.pack();
    frame.setVisible(true);
    frame.show();
  }
Oder du meinst setName(String):
Java:
private JButton createButton(final String name) {
  final JButton button = new JButton(getText(name));
  button.setName(name);
  return button;
}
alles klar wie ist das dann aber wenn ich den Button später weiter verwende:
public void FarbenUndButtonsErstellen(int i//Position der Flagge in der Datenbank
){
int AnzahlFarben=0;
for(int j=0; j++; j<=6){
if(Datenbank.gets(i,j)!=""){
Farben[j]=Datenbank.gets(i,j);
JButton button= new JButton();
button.setTitle("Button"+j);
button.setBackground(Datenbank.gets(i,j));
mPanel.add("Button"+j);
AnzahlFraben++;
}
}
mPanel.setLayout(new Gridlayout(1,AnzahlFarben+2,5,5));
JButton ButtonRandom1=new JButton();
JButton ButtonRandom2=new JButton();
mPanel.add(ButtonRandom1);
mPanel.add(ButtonRandom2);

ButtonRandom1.setBackground(Datenbank.gets(i-1,1));
ButtonRandom2.setBackground(Datenbank.gets(i-1,2));

}

passt das dann an der fett markierten Stelle oder wird der JButton immer noch Button genannt?
 
"Button"+j Wird zu einem String, das ist kein Button.
Java:
mPanel.add("Button"+j);
Wenn du den Button zu einem JPanel hinzufügen willst dann musst du die Button-Variable/Instanz verwenden.
Java:
mPanel.add(button);

Hier machst du das ja auch schon so:
Java:
JButton ButtonRandom1=new JButton();
JButton ButtonRandom2=new JButton();
mPanel.add(ButtonRandom1);
mPanel.add(ButtonRandom2);
Variablennamen werden übrigens klein geschrieben: ButtonRandom1 -> buttonRandom1
 
Zuletzt bearbeitet:
Du versuchst Variablennamen dynamisch zu machen. Das geht nicht.

Wenn du eine bestimmte Anzahl an Buttons hast, dann kannst du ein Array oder eine List nutzen.

Wenn du es mit beliebigen Keys haben willst, dann kannst du eine Map nutzen. Bei einer Map kann der Key aus Strings bestehen. Dann hättest du eine Map<String,JButton> oder so.
Das wären so die Üblichen Möglichkeiten für sowas.
 
Das habe ich folgender Maßen programmiert bekomme jedoch ständig eine Fehlermeldung. "not a Statement"
Da stimmt auch einiges nicht, d. h. eigentlich ... nichts 🙂.

Bzgl. der Variablennamen wurde schon alles gesagt, aber z. B. prüft Deine Schleife j <= 6, d. h. Dein j wird Werte von 0 bis 6 annehmen. Das sind 7 verschiedene Werte, so dass Du ggf. eine ArrayIndexOutOfBoundsException erhalten wirst (das Array Farben hat die Länge 6, der größtmögliche Index ist also 5).

Der String-Vergleich mit != ist auch nicht unbedingt korrekt. Ein String ist ein Objekt und Objekte vergleicht man üblicherweise per equals auf inhaltliche Gleichheit. Außerdem kann man sich String#isEmpty() bzw. #isBlank() ansehen. Ein null-check wäre in dem Zusammenhang auch noch eine Überlegung Wert.

Ach, und die DB sollte man nicht öfter als unbedingt notwendig bemühen.

Des weiteren dürfte die Methode setBackground ein Objekt vom Typ Color und keinen String erwarten.
 

Neue Themen


Zurück
Oben