Извиняюсь за большое кл-во кода, но по другому, думаю ни как:
Код | //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)
chisla = [1, 2, 3, 4, 5, 6, 7, 8]
chislo = new JLabel('Размерность puzzle: ') message = new JTextField(10) button1 = new JButton(text: 'Вычислить', actionPerformed: {chisla = spisok(message.text)}) button2 = new JButton(text: 'Очистить', actionPerformed: {message.setText("")}) chis = new JLabel(' ') y = 0 gbc.gridy = (y); gbc.gridx = (0) gbag.setConstraints(chislo, gbc) gbc.gridy = (y); gbc.gridx = (1) gbag.setConstraints(message, gbc) gbc.gridy = (y); gbc.gridx = (2) gbag.setConstraints(button1, gbc) gbc.gridy = (y); gbc.gridx = (3) gbag.setConstraints(button2, gbc) gbc.gridy = (1); gbc.gridx = (2) gbag.setConstraints(chis, gbc)
jfrm.getContentPane().add(chislo) jfrm.getContentPane().add(message) jfrm.getContentPane().add(button1) jfrm.getContentPane().add(button2) jfrm.getContentPane().add(chis)
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)
|
Код | //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 = [1, 2, 3, 4, 5, 6, 7, 8] закоментированно не появляется GUI проги, пишется что нет свойства для класса, в тоже время происходит присвоение результата метода spisok переменной chisla в
Код | button1 = new JButton(text: 'Вычислить', actionPerformed: {chisla = spisok(message.text)})
|
но в
Код | dl = Math.round(Math.sqrt(chisla.size()))
|
его не "видно" ... Почему так происходит, и как надо исправить код? |