Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Java > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 31.10.2017, 02:50   #11
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 904
Репутация: 652
По умолчанию

Не понял, что не так?
Изображения
Тип файла: png Groovy.PNG (12.4 Кб, 32 просмотров)
Black Fregat вне форума   Ответить с цитированием
Старый 31.10.2017, 03:56   #12
leprekod
Пользователь
 
Регистрация: 18.12.2016
Сообщений: 35
Репутация: 10
По умолчанию

Black Fregat, на снимке N = 5 - при такой размерности пазла, а вобщем при N от 2 до 9, что кнопка с номером 2, что с 24 по ширине равны, но уже при N = 10, кнопки с одним символом по ширине меньше чем кнопки с двумя символами ...
leprekod вне форума   Ответить с цитированием
Старый 31.10.2017, 05:45   #13
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 904
Репутация: 652
По умолчанию

Код:

gbc.fill = GridBagConstraints.BOTH

Будет также работать (но чуть по-другому)
Код:

jbtnCh.setMinimumSize(btnDim)


Последний раз редактировалось Black Fregat; 31.10.2017 в 05:53. Причина: Добавил вариант
Black Fregat вне форума   Ответить с цитированием
Старый 15.11.2017, 20:32   #14
leprekod
Пользователь
 
Регистрация: 18.12.2016
Сообщений: 35
Репутация: 10
По умолчанию

Black Fregat, если не трудно, как можно изменить часть кода:

Код:

........................................................................................
 H = "Y = ${Y}; X = ${X}"
 jbtnCh = new JButton(text: chisla[I], actionPerformed: {println(H)})
...................................................................................................

чтобы он, при нажатии на кнопку, возвращал Y и X этой кнопки, а не последней как сейчас ...
leprekod вне форума   Ответить с цитированием
Старый 15.11.2017, 23:31   #15
leprekod
Пользователь
 
Регистрация: 18.12.2016
Сообщений: 35
Репутация: 10
По умолчанию

И ещё Black Fregat, вопрос из чистого интереса - Вам когда либо приходилось использовать оператор присваивания ( = ) в условном выражении, в качестве условного оператора - например так:
Код:

def Poisk (N, Q, W) {   
       M = matrica[Q][W]
  if ((Q  >= 0 && matrica[Q-1][W] == 0 && (matrica[Q-1][W] = M)) ||
      (W+1 < N && matrica[Q][W+1] == 0 && (matrica[Q][W+1] = M)) ||
      (Q+1 < N && matrica[Q+1][W] == 0 && (matrica[Q+1][W] = M)) ||
      (W  >= 0 && matrica[Q][W-1] == 0 && (matrica[Q][W-1] = M)))
      {matrica[Q][W] = 0}             
}

Метод Poisk взят из проги где я смоделировал логику работы puzzle ...

Последний раз редактировалось leprekod; 15.11.2017 в 23:35.
leprekod вне форума   Ответить с цитированием
Старый 24.12.2017, 00:50   #16
leprekod
Пользователь
 
Регистрация: 18.12.2016
Сообщений: 35
Репутация: 10
По умолчанию

У меня такой вопрос - мне надо делать код так, чтобы при каждом нажатии на кнопку происходила полная перерисовка таблицы, или происходил "обмен" между "пустой" кнопкой и кнопкой с цифрой ...
leprekod вне форума   Ответить с цитированием
Старый 25.12.2017, 00:12   #17
leprekod
Пользователь
 
Регистрация: 18.12.2016
Сообщений: 35
Репутация: 10
По умолчанию

Вот что имеется на сегодня ( если, конечно, "обмен" это правильно) :
Код:

N = 4
chisla = spisok(N)
Oglavlenie(N)
for (int I = 0; I < N**2; I++) { 
     knopka(N, I)
}
jfrm.setVisible(true)
//----------------------------------------------------------------------------------
def knopka(N, I) { 
  Y = (int)(I/N); X = I%N
  jbtnCh = new JButton(text: chisla[I], actionPerformed: {Poisk(N, I)})    
  gbc.gridy = Y+1; gbc.gridx = X+1  
  jbtnCh.setPreferredSize(btnDim)   
  gbag.setConstraints(jbtnCh, gbc)
  jfrm.getContentPane().add(jbtnCh) 
}
def Poisk(N, I) {
      M = chisla[I]
  if ((I-N >= 0    && chisla[I-N] == null && (T = I-N) &&(chisla[I-N] = M)) ||
      (I+1 <  N**2 && chisla[I+1] == null && (T = I+1) &&(chisla[I+1] = M)) ||
      (I+N <  N**2 && chisla[I+N] == null && (T = I+N) &&(chisla[I+N] = M)) ||
      (I-1 >= 0    && chisla[I-1] == null && (T = I-1) &&(chisla[I-1] = M))) {       
       chisla[I] = null; Osnov_T(N, T); Osnov_I(N, I)
   }   
}
def Osnov_T(N, T) { 
  Y = (int)(T/N); X = T%N
  jbtnCh = new JButton(text: M/*, actionPerformed: {Poisk(N, T)}*/)
  gbc.gridy = Y+1; gbc.gridx = X+1
  jbtnCh.setPreferredSize(btnDim)   
  gbag.setConstraints(jbtnCh, gbc)
  jfrm.getContentPane().add(jbtnCh)
  //println("I = ${T+1}, Y = ${Y}, X = ${X}; Znachenie = ${M}")
}
def Osnov_I(N, I) { 
  Y = (int)(I/N); X = I%N
  jbtnCh = new JButton(text: null/*, actionPerformed: {Poisk(N, I)}*/)
  gbc.gridy = Y+1; gbc.gridx = X+1
  jbtnCh.setPreferredSize(btnDim)   
  gbag.setConstraints(jbtnCh, gbc)
  jfrm.getContentPane().add(jbtnCh)
  //println("I = ${I+1}, Y = ${Y}, X = ${X}; Znachenie = ${null}")
}
def Oglavlenie(N) {
    for (int G = 0; G < N; G++) { 
 jlabChY = new JLabel("Y = ${G}     ")
 gbc.gridy = G+1; gbc.gridx = 0
 gbag.setConstraints(jlabChY, gbc)
 jfrm.getContentPane().add(jlabChY)
 jlabChX = new JLabel("    X = ${G}")
 gbc.gridy = 0; gbc.gridx = G+1
 gbag.setConstraints(jlabChX, gbc)
 jfrm.getContentPane().add(jlabChX)
   }
}

Но код не работает (в том смысле, что не происходит "обмен") ...
leprekod вне форума   Ответить с цитированием
Старый 25.12.2017, 01:06   #18
leprekod
Пользователь
 
Регистрация: 18.12.2016
Сообщений: 35
Репутация: 10
По умолчанию

Упрощение и сокращение кода:
Код:

{chisla[I] = null; Osnov(N, T); Osnov(N, I)}   
} 
def Osnov(N, E) { 
  Y = (int)(E/N); X =E%N
  jbtnCh = new JButton(text: chisla[E], actionPerformed: {Poisk(N, E)})
  gbc.gridy = Y+1; gbc.gridx = X+1
  jbtnCh.setPreferredSize(btnDim)   
  gbag.setConstraints(jbtnCh, gbc)
  jfrm.getContentPane().add(jbtnCh)
  //println("I = ${T+1}, Y = ${Y}, X = ${X}; Znachenie = ${chisla[E]}")
}

leprekod вне форума   Ответить с цитированием
Старый 26.12.2017, 23:28   #19
leprekod
Пользователь
 
Регистрация: 18.12.2016
Сообщений: 35
Репутация: 10
По умолчанию

Попробуем по другому:
Код:

N = 3; F = null
chisla = [1, 2, 3, 4, 5, 6, 7, 8, null]//spisok(N)
Oglavlenie(N)
Tablica(N, F)
jfrm.setVisible(true)
//----------------------------------------------------------------------------------
def Tablica(N, F) {
  for (int I = 0; I < N**2; I++) {
    if (I == F) {I = F}
        knopka(N, I)
   }
}
def knopka(N, I) {   
  Y = (int)(I/N); X = I%N  
  jbtnCh = new JButton(text: chisla[I], actionPerformed: {Poisk(N, I)})    
  gbc.gridy = Y+1; gbc.gridx = X+1  
  jbtnCh.setPreferredSize(btnDim)   
  gbag.setConstraints(jbtnCh, gbc)
  jfrm.getContentPane().add(jbtnCh)
  println("I = ${I}; (Y = ${Y}, X = ${X}); Znac = ${chisla[I]}")// эта строка печатает
  //логику работы проги (в NetBeans). Она показывает что происходит передвижение кнопки
  //null (или, по другому - перемещение кнопки со знаком на сободное поле, но с изображением
  // ничего не происходит!...)  Почему?!...
}
def Poisk(N, I) {
       M = chisla[I]
  if ((I-N >= 0    && chisla[I-N] == null && (F = I-N) && (chisla[I-N] = M)) ||
      (I+1 <  N**2 && chisla[I+1] == null && (F = I+1) && (chisla[I+1] = M)) ||
      (I+N <  N**2 && chisla[I+N] == null && (F = I+N) && (chisla[I+N] = M)) ||
      (I-1 >= 0    && chisla[I-1] == null && (F = I-1) && (chisla[I-1] = M)))
      {chisla[I] = null; Tablica(N, F); println("__________________________________")}   
} 
def Oglavlenie(N) {
  for (int G = 0; G < N; G++) { 
   jlabChY = new JLabel("Y = ${G}    ")
   gbc.gridy = G+1; gbc.gridx = 0
   gbag.setConstraints(jlabChY, gbc)
   jfrm.getContentPane().add(jlabChY)
//--------------------------------------
   jlabChX = new JLabel("    X = ${G}")
   gbc.gridy = 0; gbc.gridx = G+1
   gbag.setConstraints(jlabChX, gbc)
   jfrm.getContentPane().add(jlabChX)
   }
}

leprekod вне форума   Ответить с цитированием
Старый 27.12.2017, 08:28   #20
leprekod
Пользователь
 
Регистрация: 18.12.2016
Сообщений: 35
Репутация: 10
По умолчанию

Упрощение:
Код:

def Poisk(N, I) {
       M = chisla[I]
  if (((F=I-N) >= 0    && chisla[F] == null && (chisla[F] = M)) ||
      ((F=I+1) <  N**2 && chisla[F] == null && (chisla[F] = M)) ||
      ((F=I+N) <  N**2 && chisla[F] == null && (chisla[F] = M)) ||
      ((F=I-1) >= 0    && chisla[F] == null && (chisla[F] = M)))
      {chisla[I] = null; Tablica(N, F); println("__________________________________")}   
}

leprekod вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ввод/вывод в Groovy leprekod Общие вопросы по Java, Java SE, Kotlin 15 08.03.2017 10:09
Плагин для groovy Senatorik Общие вопросы по Java, Java SE, Kotlin 4 10.04.2016 01:14
GROOVY AlyonaM Помощь студентам 0 19.03.2014 10:30
Swing JLayer&&LayerUI mir_zol Общие вопросы по Java, Java SE, Kotlin 0 14.04.2013 20:00


11:12.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru