С Новым годом! Форум программистов, компьютерный форум, киберфорум
Языки JVM
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
5 / 5 / 3
Регистрация: 25.07.2016
Сообщений: 182
1

Groovy Диспетчер компоновки GridBagLayout

19.09.2017, 16:16. Показов 1831. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пишу игрушку "Puzzle" ...
Для этого мне сначала надо разобраться как
работает GridBagLayout!
Чтобы было с чем "возиться", прошу предоставить
мне код создающий четыре кнопки - две по
горизонтали, две по вертикали - пара под парой.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.09.2017, 16:16
Ответы с готовыми решениями:

Groovy Присвоение ввода с клавиатуры переменной в Groovy
Map rim_arab = BufferedReader br = new BufferedReader(new InputStreamReader(System.in)) print...

Groovy Error: no Groovy library is defined for module
Error:Cannot compile Groovy files: no Groovy library is defined for module 'untitled104' Что это за...

Groovy Теоретически-практический ? про замыкания (Groovy)
order = V = 0; n = 3 def Vid = {it -> print it; print V if ((V+1)%n ==...

Groovy Groovy и Андроид - работают ли вместе?
Здравствуйте. Недавно прочитал про Groovy и выделил для себя несколько приятных плюсов по сравнению...

12
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
19.09.2017, 17:18 2
https://docs.oracle.com/javase... idbag.html
0
5 / 5 / 3
Регистрация: 25.07.2016
Сообщений: 182
19.09.2017, 19:43  [ТС] 3
Уважаемый xoraxax, есть у меня подозрение, что данный пример
будет для меня мало полезен. Наверное надо было сразу сказать,
что я пишу игрушку на Groovy ...
К чему я это?
Дело в том, что у меня есть книга Шилдта про Swing, и там есть
пример даже более подходящий по расположению кнопок, но
после существенной переделки прога рисует только одну кнопку
на всё окно ...
В общем, мне для начала каких либо "телодвижений", нужен пример
на Groovy
0
xoraxax
19.09.2017, 20:00
  #4

Не по теме:

тебе для начала нужно хелловорлд написать, а не лезть в гуи

0
5 / 5 / 3
Регистрация: 25.07.2016
Сообщений: 182
19.09.2017, 21:11  [ТС] 5
Уважаемый xoraxax, а разве Вы не смотрели тему Groovy @ Swing
0
5 / 5 / 3
Регистрация: 25.07.2016
Сообщений: 182
21.09.2017, 22:39  [ТС] 6
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
//puzzle.groovy
package groovy
//import groovy.swing.SwingBuilder
import javax.swing.*
//import java.awt.FlowLayout
//import java.util.*
import java.awt.*
//import java.awt.event.*
 
jfrm = new JFrame('N-мерный пазл')
 
gbag = new GridBagLayout()
gbc  = new GridBagConstraints()
 
jfrm.getContentPane().setLayout(gbag)
jfrm.setSize(400, 400)
 
jbtnOne   = new JButton('1')
jbtnTwo   = new JButton('2')
jbtnThree = new JButton('3')
jbtnFour  = new JButton('4')
 
btnDim = new Dimension(45, 45)
 
jbtnOne.setPreferredSize(btnDim)
jbtnTwo.setPreferredSize(btnDim)
jbtnThree.setPreferredSize(btnDim)
jbtnFour.setPreferredSize(btnDim)
 
gbc.weightx = 0.0
 
gbc.insets = new Insets(0, 0, 0, 0)
 
gbc.gridx = 0; gbc.gridy = 1
gbag.setConstraints(jbtnOne, gbc)
gbc.gridx = 1; gbc.gridy = 1
gbag.setConstraints(jbtnTwo, gbc)
gbc.gridx = 0; gbc.gridy = 2
gbag.setConstraints(jbtnThree, gbc)
gbc.gridx = 1; gbc.gridy = 2
gbag.setConstraints(jbtnFour, gbc)
 
jfrm.getContentPane().add(jbtnOne)
jfrm.getContentPane().add(jbtnTwo)
jfrm.getContentPane().add(jbtnThree)
jfrm.getContentPane().add(jbtnFour)
 
jfrm.setVisible(true)
Добавлено через 20 часов 48 минут
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
//puzzle.groovy
package groovy
import groovy.swing.SwingBuilder
import javax.swing.*
import java.awt.FlowLayout
import java.util.*
import java.awt.*
import java.awt.event.*
/*public class Spisok_2 {def spisok_2 (n) { Spisok m1 = new Spisok(); def   order1 = m1.spisok(n); return order1}}
                       def spisok (n) {Spisok_2 m2 = new Spisok_2();  order1 = m2.spisok_2(n)}*/
jfrm = new JFrame('N-мерный пазл')
gbag = new GridBagLayout()
gbc  = new GridBagConstraints()
jfrm.getContentPane().setLayout(gbag)
jfrm.setSize(400, 400)
btnDim = new Dimension(45, 45)
gbc.weightx = 0.0
gbc.insets = new Insets(0, 0, 0, 0)
chisla = [4, 8, 1, 7, 5, 3, 6, 2, 9]; i = 0
dl = Math.sqrt(chisla.size())
for (int Y = 1; Y <= dl; Y++) {
  for (int X = 0; X < dl; X++) {
    jbtnCh = new JButton("${chisla[i]}")
    jbtnCh.setPreferredSize(btnDim)
    gbc.gridx = (X); gbc.gridy = (Y)
    gbag.setConstraints(jbtnCh, gbc)
    jfrm.getContentPane().add(jbtnCh)
    ++i
   }
}
jfrm.setVisible(true)
0
33 / 33 / 17
Регистрация: 25.03.2013
Сообщений: 520
Записей в блоге: 5
22.09.2017, 14:55 7
Цитата Сообщение от Slenon Посмотреть сообщение
после существенной переделки прога рисует только одну кнопку
на всё окно
Это проблема вашей переделки, которая берется из-за незнания/непонимания Groovy. Вы можете переписать весь код на Java и он будет работать в Groovy, это облегчит ваши страдания.
0
5 / 5 / 3
Регистрация: 25.07.2016
Сообщений: 182
26.09.2017, 00:13  [ТС] 8
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
//puzzle.groovy
package groovy
//import groovy.swing.SwingBuilder
import javax.swing.*
//import java.awt.FlowLayout
import java.util.*
import java.awt.*
//import java.awt.event.*
 
public class Spisok_2 {def spisok_2 (N) { Spisok m1 = new Spisok(); def   order1 = m1.spisok(N); return order1}}
                       def spisok (N) {Spisok_2 m2 = new Spisok_2();  order1 = m2.spisok_2(N)}
 
jfrm = new JFrame('N-мерный puzzle')
gbag = new GridBagLayout()
gbc  = new GridBagConstraints()
jfrm.getContentPane().setLayout(gbag)
jfrm.setSize(500, 500)
btnDim  = new Dimension(50, 50)
gbc.weightx = 0.0       
gbc.insets  = new Insets(0, 0, 0, 0)
//chislo  = new JLabel('Размерность puzzle: ')
message  = new JTextField(12)
message1 = new JTextField(12)
List chisla = [1, 2, 3, 4]
button1 = new JButton(text: 'Вычислить', actionPerformed: {chisla = spisok(message.text)})
button2 = new JButton(text: 'Очистить',  actionPerformed: {message1.setText("${chisla}")})
/*jfrm.getContentPane().add(chislo);*/  jfrm.getContentPane().add(message)
jfrm.getContentPane().add(button1); jfrm.getContentPane().add(button2)
jfrm.getContentPane().add(message1)
 
i  = 0; dl = Math.sqrt(chisla.size())
for (int Y = 1; Y <= dl; Y++) {
  for (int X = 1; X <= dl; X++) {
    if (X == dl & Y == dl) {continue}    
    jbtnCh  = new JButton("${chisla[i]}")
    jbtnCh.setPreferredSize(btnDim)
    gbc.gridx = (X); gbc.gridy = (Y)
    gbag.setConstraints(jbtnCh, gbc)
    jfrm.getContentPane().add(jbtnCh)
    i++
   }
}
jfrm.setVisible(true)
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//Spisok.groovy
package groovy
  public class Spisok {  
    String N
    Integer Q, J, T, S
    List order, order1
  def spisok (N) {
    S = (N as Integer  ) ** 2
    order = [null]; Q = 0;
  while (Q < S) {
     J = 0; T = Math.round(Math.random() * S)
    if (T != 0) {for (i in order) {if (T != i) {++J} }
      if (J == order.size()) {order = order + T}
         }
      order1 = order - null; Q = order1.size()
      }
   return order1
   }
}
Вся проблема в том, что в проге существуют как бы две переменные
с одним и тем же названием chisla ...
Из за чего возникла эта проблема, и как её решить?!

Добавлено через 3 часа 6 минут
Я непонятно выразился - без
Java
1
List chisla = [1, 2, 3, 4]
не появляется GUI проги, и нельзя проверить что другой chisla
присваивается значение ...
0
33 / 33 / 17
Регистрация: 25.03.2013
Сообщений: 520
Записей в блоге: 5
26.09.2017, 20:23 9
Цитата Сообщение от Slenon Посмотреть сообщение
Вся проблема в том, что в проге существуют как бы две переменные
с одним и тем же названием chisla ...
Из за чего возникла эта проблема, и как её решить?!
Проверьте где вы объявили точно такую же переменную по имени
0
5 / 5 / 3
Регистрация: 25.07.2016
Сообщений: 182
26.09.2017, 23:21  [ТС] 10
Одной переменной chisla присваивается результат
работы метода spisok в button1
другая переменная chisla -> List chisla = [1, 2, 3, 4]

Добавлено через 8 минут
Мне просто надо "вытащить" значение chisla из button1 ...
0
5 / 5 / 3
Регистрация: 25.07.2016
Сообщений: 182
02.10.2017, 23:04  [ТС] 11
Попробуем по другому:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
//puzzle.groovy
package groovy
import groovy.swing.SwingBuilder
import javax.swing.*
import java.awt.FlowLayout
import java.util.*
import java.awt.*
import java.awt.event.*
 
def f = new File("C:\\Groovy\\puzzle\\src\\groovy\\Spisok.groovy")
 
swinger = new SwingBuilder()
gui = swinger.frame(title:'!!!!!!!!', size: [500, 120]) {
  panel(layout: new FlowLayout()) {
    arab = new JLabel('Размерность puzzle:')
      panel().add(arab)
        message = textField(columns: 10)
          button1 = swinger.button(text: 'Вычислить', actionPerformed: {chisla = spisok(message.text)})
          button2 = swinger.button(text: 'Загрузка',  actionPerformed: {f})
          //Как сделать так, чтобы при нажатии button2 загружался файл Spisok.groovy, т.е. появлялось окно ...
    }
}
gui.show()
  def spisok (N) {
    S = (N as Integer  ) ** 2
    order = [null]; Q = 0;
  while (Q < S) {
     J = 0; T = Math.round(Math.random() * S)
    if (T != 0) {for (i in order) {if (T != i) {++J} }
      if (J == order.size()) {order = order + T}
         }
      order1 = order - null; Q = order1.size()
      }
   return order1
   }
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//Spisok.groovy
package groovy
import javax.swing.*
import java.util.*
import java.awt.*
 
jfrm = new JFrame('N-мерный puzzle')
gbag = new GridBagLayout()
gbc  = new GridBagConstraints()
jfrm.getContentPane().setLayout(gbag)
jfrm.setSize(500, 500)
btnDim  = new Dimension(50, 50)
gbc.weightx = 0.0       
gbc.insets  = new Insets(0, 0, 0, 0)
chisla = order1
//chisla = [1, 2, 3, 4, 5, 6, 7, 8]
 
i  = 0; dl = Math.round(Math.sqrt(chisla.size()))
for (int Y = 2; Y < dl + 2; Y++) {
  for (int X = 1; X <= dl; X++) {
    if ((Y == dl + 1) & (X == dl)) {continue}    
    jbtnCh  = new JButton("${chisla[i]}")
    jbtnCh.setPreferredSize(btnDim)
    gbc.gridy = (Y); gbc.gridx = (X)
    gbag.setConstraints(jbtnCh, gbc)
    jfrm.getContentPane().add(jbtnCh)
    i++
   }
}
jfrm.setVisible(true)
0
5 / 5 / 3
Регистрация: 25.07.2016
Сообщений: 182
18.10.2017, 19:07  [ТС] 12
И ещё одна попытка ...
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//---------------------------------------------------------------------------------------------
H = "X"                       
N = 5
chisla = spisok(N)
dl = chisla.size()
def naprav () {q = 3; w = 3; [q, w]}
for (int I = 0; I < dl; I++) {
  Y = (int)(I/N); X = I%N  
  jbtnCh = new JButton(text: chisla[I],  actionPerformed: {jbtnCh.setText(H)})
//Как сделать так, чтобы при нажатии на любой кнопке, имено она именовалась "X",
//а не последняя, как происходит сейчас?...
  //jbtnCh = new JButton(text: chisla[I],  actionPerformed: {def (X, Y) = naprav()})
//Как сделать так, чтобы при нажатии на любой кнопке, значения X и Y из JButton(...)
//передавались в gbc.gridy = Y; gbc.gridx = X
  gbc.gridy = Y; gbc.gridx = X 
  jbtnCh.setPreferredSize(btnDim)   
  gbag.setConstraints(jbtnCh, gbc)
  jfrm.getContentPane().add(jbtnCh) 
   }
jfrm.setVisible(true)
//---------------------------------------------------------------------------------------------
0
5 / 5 / 3
Регистрация: 25.07.2016
Сообщений: 182
20.10.2017, 01:10  [ТС] 13
1.
Java
1
actionPerformed: {e -> e.getSource().setText(H)}
2. Мне показали что вопрос ни о чём ...
0
20.10.2017, 01:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.10.2017, 01:10
Помогаю со студенческими работами здесь

Groovy Нужен цикл (Groovy)
цикл такой нужен чтоб при ошибке возвращался с первому и повторял заново свое действие А у меня...

Groovy Ошибка: Groovy files
Написал программу, которая работает с БД MySQL. Но при запуске выкидывает ошибку про Groovy файлы....

Groovy Gradle and Groovy
Разбираюсь с этой системой сборки, прочитал уже про Groovy, почитал документацию, но все еще есть...

Расположение компонентов. Менеджера компоновки GridBagLayout
Хочу основательно разобраться с таким новым для меня понятием как менеджер компоновки. Пока читаю...

Какой диспетчер компоновки лучше?
Какой диспетчер компоновки лучше(соотношение гибкость/легкость в использовании) GridBagLayout или...

Диспетчер компоновки фрейма(Флоу вместо Бордэр)
Могу ли я поменять диспетчер компоновки фрейма? Что нужно сделать, чтобы фрейм использовал Flow...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru