Hallo,
Ich habe einen Fehler bei einem Programm, das ic hgeschrieben habe. Ich mache das noch nicht so lange und kann deswegen nur spekulieren warum das nicht funktioniert.
Hier ist mein Programm:
Es geht vor allem um den unteren Teil:
Es soll damit quasi ein Shop geöffnet werden, es wieder beim drauf klicken aber nur ein mal geschlossen und kann beim weiteren klicken nicht mehr geöffnet werden. Ich glaube dass die boolean Variable shopvalue nicht richtig auf false gesetzt wird.
Ich bin über alle Antworten froh.
L. G. lordderlamas
Ich habe einen Fehler bei einem Programm, das ic hgeschrieben habe. Ich mache das noch nicht so lange und kann deswegen nur spekulieren warum das nicht funktioniert.
Hier ist mein Programm:
Java:
package com.company;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class MyFrame extends JFrame implements ActionListener {
JButton button;
JButton upgrade;
JButton shop;
JLabel labelcoins;
JLabel labelcost;
JLabel labelcoinsperclick;
ImageIcon icon;
ImageIcon upgradearrow;
ImageIcon shopicon;
double coins = 0;
double more = 1;
double cost = more * 1.006;
boolean shopvalue true;
MyFrame() {
icon = new ImageIcon("src/dogecoin-shop.png");
icon.setImage(icon.getImage().getScaledInstance(95,95,Image.SCALE_DEFAULT));
upgradearrow = new ImageIcon("src/upgrade_rrow.png");
upgradearrow.setImage(upgradearrow.getImage().getScaledInstance(45,45,Image.SCALE_DEFAULT));
shopicon = new ImageIcon("src/shophauspng.png");
shopicon.setImage(shopicon.getImage().getScaledInstance(35,35,Image.SCALE_DEFAULT));
labelcost = new JLabel();
labelcost.setVisible(true);
labelcost.setLocation(0, 360);
labelcost.setSize(500,20);
labelcost.setText("Upgrade Kosten: " + 1.006 + " Coins");
labelcost.setFont(new Font("Comic Sans", Font.BOLD, 15));
labelcost.setHorizontalAlignment(JLabel.CENTER);
labelcoinsperclick = new JLabel();
labelcoinsperclick.setVisible(true);
labelcoinsperclick.setLocation(0, 175);
labelcoinsperclick.setSize(500,20);
labelcoinsperclick.setText("Du kriegst: " + 1 + " pro Klick");
labelcoinsperclick.setFont(new Font("Comic Sans", Font.BOLD, 15));
labelcoinsperclick.setHorizontalAlignment(JLabel.CENTER);
labelcoins = new JLabel();
labelcoins.setVisible(true);
labelcoins.setLocation(0, 160);
labelcoins.setSize(500,20);
labelcoins.setText("Deine Coins betragen: " + coins);
labelcoins.setFont(new Font("Comic Sans", Font.BOLD, 15));
labelcoins.setHorizontalAlignment(JLabel.CENTER);
button = new JButton();
button.setBounds(200, 50, 100, 100);
button.addActionListener(this);
button.setFocusable(false);
button.setHorizontalTextPosition(JButton.CENTER);
button.setVerticalTextPosition(JButton.BOTTOM);
button.setFont(new Font("Comic Sans", Font.BOLD, 25));
button.setIconTextGap(-15);
button.setForeground(Color.MAGENTA);
button.setBackground(Color.white);
button.setBorder(null);
button.setIcon(icon);
shop = new JButton();
shop.setBounds(25, 300, 35, 35);
shop.addActionListener(this);
shop.setIcon(shopicon);
shop.setFocusable(false);
shop.setHorizontalTextPosition(JButton.CENTER);
shop.setVerticalTextPosition(JButton.BOTTOM);
shop.setFont(new Font("Comic Sans", Font.BOLD, 25));
shop.setForeground(Color.blue);
shop.setBackground(Color.white);
shop.setBorder(null);
upgrade = new JButton();
upgrade.setBounds(225, 300, 50, 50);
upgrade.addActionListener(this);
upgrade.setIcon(upgradearrow);
upgrade.setFocusable(false);
upgrade.setHorizontalTextPosition(JButton.CENTER);
upgrade.setVerticalTextPosition(JButton.BOTTOM);
upgrade.setFont(new Font("Comic Sans", Font.BOLD, 25));
upgrade.setForeground(Color.blue);
upgrade.setBackground(Color.white);
upgrade.setBorder(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLayout(null);
this.setSize(500, 500);
this.setVisible(true);
this.add(button);
this.add(labelcoins);
this.add(upgrade);
this.add(labelcost);
this.add(labelcoinsperclick);
this.add(shop);
this.setTitle("Button Clicker");
this.getContentPane().setBackground(Color.white);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == button) {
System.out.println("clicked");
coins = coins + more;
double newcoins = Math.round(coins*10.0)/10.0;
System.out.println(coins);
labelcoins.setText("Deine Coins betragen: " + newcoins);
}
if (coins - cost >= 0){
if (e.getSource() == upgrade) {
more = more * 1.005;
coins = coins - cost;
cost = more * 1.006;
double newcoins = Math.round(coins*10.0)/10.0;
double newcost = Math.round(cost*10.0)/10.0;
labelcost.setText("Upgrade Kosten: " + newcost + " Coins");
labelcoins.setText("Deine Coins betragen: " + newcoins);
labelcoinsperclick.setText("Du kriegst: " + newcost + " pro Klick");
}
}
if (shopvalue = true) {
if (e.getSource() == shop){
shopvalue = false;
labelcost.setVisible(false);
upgrade.setVisible(false);
}
}
if (shopvalue = false) {
if (e.getSource() == shop){
shopvalue = true;
labelcost.setVisible(true);
upgrade.setVisible(true);
}
}
}
}
Es geht vor allem um den unteren Teil:
Java:
if (shopvalue = true) {
if (e.getSource() == shop){
shopvalue = false;
labelcost.setVisible(false);
upgrade.setVisible(false);
}
}
if (shopvalue = false) {
if (e.getSource() == shop){
shopvalue = true;
labelcost.setVisible(true);
upgrade.setVisible(true);
}
}
Es soll damit quasi ein Shop geöffnet werden, es wieder beim drauf klicken aber nur ein mal geschlossen und kann beim weiteren klicken nicht mehr geöffnet werden. Ich glaube dass die boolean Variable shopvalue nicht richtig auf false gesetzt wird.
Ich bin über alle Antworten froh.
L. G. lordderlamas