jQuery の In Place Editor プラグインを作ってみた
2010年02月21日
独立心旺盛で、新しい技術で新しいWebサービスを作りたいと思っているけれど、ひとりでやることに限界を感じているフリーのエンジニアの方。あなたの期待にこたえられる仲間と環境を、八角研究所なら提供できると思います。社員としてではない関わり方も、あるかもしれません。
この会社の特徴を知る
このカテゴリの記事はまだ投稿されていません
など 3 記事
など 24 記事
コンポーネントを自由に配置するためには避けて通れないレイアウトマネージャーについて書いてみます。
Swing(AWT)では、コンテナに対してadd(Component)/add(Component,int)/add(Component,Object)/add(Component,Object,int)のいずれかのメソッドを使用してコンポーネントを追加します。レイアウトマネージャは、addされたコンポーネントをコンテナ上に「良きに計らって」配置してくれるものです。
例として、FlowLayout(左から順に配置するレイアウトマネージャ)の場合を見てみます。表示される座標などの細かな指示を与えていないにも関わらず、いい感じに配置されています。
FlowLayout
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
public class ImasaraSwing3_1 {
private static void createAndShowGUI() {
final JFrame f = new JFrame("いまさらSwing3_1");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLayout(new FlowLayout()); //レイアウトマネージャにFlowLayoutを設定
final JButton button1 = new JButton("ボタン1");
f.add(button1);
final JButton button2 = new JButton("ボタン2");
f.add(button2);
final JButton button3 = new JButton("ボタン3");
f.add(button3);
final JButton button4 = new JButton("ボタン4");
f.add(button4);
final JButton button5 = new JButton("ボタン5");
f.add(button5);
f.pack();
f.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
createAndShowGUI();
}
});
}
}
レイアウトマネージャーは、LayoutManagerもしくはLayoutManager2を実装したもので、LayoutManager2を実装したものは、各コンポーネントに対して制約オブジェクトを設定できるので全般的に高機能なものが多くなっています。制約オブジェクトとは、コンテナのadd(Component,Object)/add(Component,Object,int)のObjectで設定され、その値は、各レイアウトマネージャごとに異なります(String型であったり、専用の制約クラスが用意されていたりします)。
例としてLayoutManager2の実装クラスのBorderLayoutを見てみます。BorderLayoutの制約オブジェクトはString型でBorderLayout.NORTH(文字列 "North" )のように定数として定義されています。
BorderLayout
import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
public class ImasaraSwing3_2 {
private static void createAndShowGUI() {
final JFrame f = new JFrame("いまさらSwing3_1");
//f.setLayout(new BorderLayout()); //デフォルトでBorderLayoutなので設定しなくてもよい。
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JButton button1 = new JButton("ボタン1");
f.add(button1, BorderLayout.NORTH); //制約 NORTH
final JButton button2 = new JButton("ボタン2");
f.add(button2, BorderLayout.WEST); //制約WEST
final JButton button3 = new JButton("ボタン3");
f.add(button3, BorderLayout.CENTER); //制約CENTER
final JButton button4 = new JButton("ボタン4");
f.add(button4, BorderLayout.EAST); //制約EAST
final JButton button5 = new JButton("ボタン5");
f.add(button5, BorderLayout.SOUTH); //制約SOUTH
f.pack();
f.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
createAndShowGUI();
}
});
}
}
個人的にですが、下記レイアウトマネージャーがよく使われているのではないかと思っています。はじめは、これらのレイアウトマネージャーから手をつけてみると良いかもしれません。
コメントはありません
トラックバックはありません
メンバー紹介
2010年02月21日
2010年02月21日
2009年09月07日
2009年09月01日
2009年08月22日
2009年08月15日
2009年08月07日
2009年08月07日
2009年07月28日
この日記にコメントする