我正在嘗試在java swing中創建一個gui,讓用戶使用切換按鈕預訂座位。我最初使用默認的按鈕顏色來測試點擊事件是否起作用。該按鈕應變成紅色以表示其已被預訂並變爲黃色以表示其未被預訂。java swing中的JToggleButton無法識別isSelected()方法?
這裏是我的actionPerformed方法
@Override
public void actionPerformed(ActionEvent e) {
GoldSeat seat = (GoldSeat)e.getSource();
if(seat.isSelected()){
seat.setBackground(Color.red);
}
else
{
seat.setBackground(Color.yellow);
}
}
GoldSeat只是一個派生類JToggleButton中的。出於某種原因,當我單擊按鈕時,它不會變成紅色(它變成默認的灰色),但是當我再次單擊它時,它會變成黃色。所以看起來按鈕的「真實」或「開啓」狀態不起作用,但是「錯誤」是。我不知道爲什麼isSelected()不能正常工作。
任何想法如何解決這個問題?
編輯:我扔一起快速的JFrame一個JToggleButton中就可以使用簡單的拖放生成此代碼的NetBeans接口:
jToggleButton1 = new javax.swing.JToggleButton();
jToggleButton1.setText("jToggleButton1");
jToggleButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jToggleButton1ActionPerformed(evt);
}
});
和動作事件:
private void jToggleButton1ActionPerformed(java.awt.event.ActionEvent evt) {
if(jToggleButton1.isSelected()){
jToggleButton1.setBackground(Color.red);
}else {
jToggleButton1.setBackground(Color.yellow);
}
}
這會執行我想要發生的事情,但是我無法使用上面發佈的派生類重新創建它。我用自己的代碼做錯了什麼?
'我做我自己的一些錯誤代碼?' - 也許沒有錯,但不同。我已經建議這是一個LAF問題。也許這兩個幀使用不同的LAF?無論如何,我們都不能根據幾行隨機代碼來判斷你做錯了什麼。 – camickr