JavaのSwingとSencha Touchが似ているという根拠薄弱な理由。
結論
コンポーネント作って、レイアウトマネージャで配置を決めるのは、Sencha TouchもSwingも同じ。
そんだけ。
Sencha Touchの場合
三つのPanelをhboxでレイアウトする
Ext.setup({ onReady : function() { new Ext.Panel({ fullscreen: true, width: 400, height: 300, layout: { type: 'hbox', align: 'stretch' }, defaults: { width: 100, height: 40, border: 3 }, items: [{ html: 'First', style: 'background-color: #FF8888' },{ html: 'Second', style: 'background-color: #88FF88' },{ html: 'Third', style: 'background-color: #8888FF' }] }); } });
三つのPanelをvboxでレイアウトする
上のソースのhboxをvboxに変えるだけ。
Javaの場合
三つのJLabelをBoxLayout(X_AXIS)でレイアウトする
import java.awt.Dimension; import javax.swing.*; public class test { public static void main(String[] args) throws Exception { new test(); } public test() { JFrame frame = new JFrame(); JPanel panel = new JPanel(); panel.add(createLabel("First", 100, 40)); panel.add(createLabel("Second", 100, 40)); panel.add(createLabel("Third", 100, 40)); panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS)); frame.getContentPane().add(panel); frame.setSize(400, 300); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } private JLabel createLabel(String text, int width, int height) { JLabel label = new JLabel(text); label.setMinimumSize(new Dimension(width, height)); label.setMaximumSize(new Dimension(width, height)); return label; } }
三つのJLabelをBoxLayout(Y_AXIS)でレイアウトする
上のソースのX_AXISをY_AXISに変えるだけ。
というわけで
GUIの構築に関して言えば、SwingとSencha Touchは、
少なからず似通った部分があるのではないのかなと思います。
ちなみにExt JSもそうですけど、
古くはVisual Basicとか、Tcl/Tkとか、XWindowだったり、、
というあたりから、脈々と受け継がれてきたものなんでしょうけどね。