2012-05-02 3 views
0

Я пишу программу в java swt, которая играет tic tac toe, и я не могу найти способ отображения изображения с помощью x или o над кнопкой без использования метода button.setImage (image). Когда я это делаю, изображение становится серым, и я не хочу этого. Есть ли способ сделать это, когда я нажимаю кнопку, кнопка становится отключенной и изображение отображается над ней, или я могу хотя бы сделать кнопку не серой, когда она отключена?Отображать изображение с отключенной кнопкой, без изображения с серым цветом?

Также следует отметить, что я использую SWT для своего графического интерфейса.

Вот часть кода у меня возникают проблемы с, если это любая помощь:

public static void drawX(Button b, Shell s, Image x){ //draws an X image 
     int topLeft_X=b.getLocation().x; 
     int topLeft_Y=b.getLocation().y; 
     GC gc = new GC(b); 
     gc.drawImage(x, topLeft_X, topLeft_Y); 
    } 


public static void drawO(Button b, Shell s, Image o){ //draws an O image 
    int topLeft_X=b.getLocation().x; 
    int topLeft_Y=b.getLocation().y; 
    GC gc = new GC(b); 
    gc.drawImage(o, topLeft_X, topLeft_Y); 
} 

static double turnCount = 1;   

public static void button(final Button b, final Shell s, final int i, final int j, final Image g, final Image h){  //the method that would make the image appear 
    b.addSelectionListener(new SelectionListener() { 

     public void widgetSelected(SelectionEvent e) { 
      b.setEnabled(false); 
      turnCount++; 
      if(p1()){ 
       a[i][j]++; 
       drawX(b, s, g); 
       b.setVisible(false); 
      } 
      else{ 
       a[i][j]--; 
       drawX(b, s, h); 
       b.dispose(); 
      } 
     } 

     public void widgetDefaultSelected(SelectionEvent e) { 
     } 
    }); 
} 
+0

Возможно, есть способ сделать это, я не знаю, но альтернативой было бы удалить/скрыть кнопку и поместить в нее «JLabel». – twain249

ответ

2
+0

+1. Возможно, я упомянул об этом раньше, но вы можете отредактировать [свой профиль] (http://stackoverflow.com/users/1291492/user1291492) и изменить номер тюрьмы, который отображается как ваше имя/nic. на что-то (что-то не наступательное)? Так сложно отслеживать пользователей с номерами. :( –

+0

Ну, это похоже на то, что я хочу, но для этого проекта я использую SWT, это моя ошибка, потому что я не объясняю в своем оригинальном посте. Знаете ли вы, есть ли подобная функция в SWT? – Jem

+0

I вроде моей анонимности – ControlAltDel

0

Вместо использования Button.setEnabled (boolean), где вы хотите включить/отключить кнопку, вы можете фильтровать события на дисплее кнопки.

button.getDisplay(). AddFilter (eventType, listenener); button.getDisplay(). RemoveFilter (eventType, listenener);

Если вы хотите отключить/включить кнопку, добавьте/удалите фильтр на события мыши и события клавиатуры.

0

Почему бы не поместить кнопку в композитный, с помощью FillLayout, и вместо отключения кнопки отключите родительский композит. Кнопка будет включена, но щелчок мыши и перемещение вкладки не достигнут.

Предупреждение: может случиться так, что пользователи могут видеть кнопку с включенным ключом, на которую нельзя нажать, но это то, что вы просили.

Смежные вопросы