那麼這個問題解釋它,不管我做什麼我不能修改我的布爾字段。下面的代碼是我正在做的任務中的一個類,但我需要能夠修改布爾值,以便做到這一點,我不能出於某種原因,所以我不知道發生了什麼事情:我無法修改我的布爾字段?
使用import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.geom.Rectangle2D;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.Timer;
@SuppressWarnings("serial")
public class Test extends JPanel implements ActionListener {
private String senderName,reciverName,message;
private int w=250,velx=13,x=330,senderW=350,senderH=100,reciverW=350,reciverH=270,messageW=350,messageH=50;
private Timer tm = new Timer(50, this);
private boolean something=true;
public void setSomething(boolean s){
something=s;
}
public Test(String s1,String s2, String s3){
String cutString1 = s1.substring(0, Math.min(15, s1.length()));
String cutString2 = s2.substring(0, Math.min(15, s2.length()));
String cutString3 = s3.substring(0, Math.min(30, s3.length()));
senderName=cutString1;
reciverName=cutString2;
message=cutString3;
setSomething(false);
//Even though I set it to false it still holds true and won't print it out
if(something=false){
System.out.print("Something");
}
setLayout(null);
timer();
}
public void timer(){
tm.setInitialDelay(10000);
tm.start();
}
public void paintComponent(Graphics g){
setOpaque(true);
super.paintComponent(g);
Font font1 = new Font( "TimesRoman", Font.BOLD, 17);
Font font2 = new Font( "TimesRoman", Font.BOLD, 30);
g.setColor(Color.CYAN);
g.fillRect(330, 30, 250, 390);
g.setFont(font1);
g.setColor(Color.BLUE);
g.drawString(message, messageW, messageH);
g.setColor(Color.RED);
g.fillRect(x, 30, w, 390);
g.setColor(Color.BLUE);
g.setFont(font2);
g.drawString(senderName, senderW, senderH);
g.drawString("To",430, 200);
g.drawString(reciverName, reciverW, reciverH);
}
public void anime(){
w=w-velx;
repaint();
}
public void actionPerformed(ActionEvent e){
anime();
}
public static void main(String[] args){
JFrame frame2 = new JFrame();
frame2.add(new Test("something","something","something"));
frame2.setTitle("Title");
frame2.setSize(700,500);
frame2.setResizable(true);
frame2.setLocationRelativeTo(null);
frame2.setVisible(true);
}
}
在你的問題中你有很多不必要的和完全不相關的代碼,例如所有與你的問題無關的Swing代碼。實際上可能並且應該已經被詢問了最多10行可編譯和可運行的代碼。將來,請對這裏的志願者表示憐憫,並試着讓你更容易理解你的代碼,然後回答你的問題。有關更多信息,請參閱:[最小示例程序](http://stackoverflow.com/help/mcve)。 – 2015-02-24 14:20:33
嘗試'if(!something)'或'if(something == false)'==比較= =時的賦值!相當於沒有。所以!真實會是(不真實)如此虛假。在你的'if(something = false)'中,你實際上正在設置或賦值false,所以在該語句之後,某些內容將是錯誤的,並且if將永遠不會被執行。 – brso05 2015-02-24 14:20:34
@HovercraftFullOfEels我給了我所有的代碼,因爲問題可能與其他與布爾無關的事情有關,我試圖儘可能地提供儘可能多的信息,就像其他人提到的一樣。 – user4601488 2015-02-24 14:38:49