Я только начал играть с Ceylon, и мне это очень нравится...
Но я столкнулся с этой проблемой при использовании Swing... Я хочу добавить компоненты в JPanel с помощью BorderLayout.
Это код, который я использую:
import javax.swing {
JLabel,
SwingUtilities { invokeLater },
JFrame { exitOnClose = \iEXIT_ON_CLOSE },
JButton,
JPanel
}
import java.lang { Runnable }
import java.awt {
Dimension,
BorderLayout { north = \iNORTH, center = \iCENTER }
}
class MySwingApp() satisfies Runnable {
shared actual void run() {
value frame = JFrame();
frame.title = "Renato app";
frame.defaultCloseOperation = exitOnClose;
frame.size = Dimension(300, 200);
frame.setLocationRelativeTo(null);
value panel = JPanel();
panel.layout = BorderLayout();
frame.add(panel);
panel.add(JLabel("Hello world"), north);
panel.add(JButton("Click me"), center);
frame.visible = true;
}
}
Ошибка:
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: cannot add to layout: constraint must be a string (or null)
at java.awt.BorderLayout.addLayoutComponent(BorderLayout.java:426)
at java.awt.Container.addImpl(Container.java:1120)
at java.awt.Container.add(Container.java:966)
at firstModule.MySwingApp.run(run.ceylon:52)
Я запускаю приложение с помощью:
invokeLater(MySwingApp());
Мне кажется, это проблема сопоставления строк на Цейлоне?!? Может ли кто-нибудь увидеть что-то, что я делаю неправильно (будучи новичком на Цейлоне, я не удивлюсь)??
BorderLayout { NORTH }
с помощью IDE, я оказываюсь в BorderLayout.north (нижний регистр), который является не строкой, а компонентом!! Может ли это быть источником проблемы?? - person Renato   schedule 20.11.2013panel.add(JLabel("Hello world"), "North");panel.add(JButton("Click me"), "Center");
- person alex2410   schedule 20.11.2013