Adapter Text Field Text Area CopyPaste JList JCombo
目次 • Adapterについて • Text. Field • Text. Area – Copy&Paste • • JList JCombo. Box JScroll. Pane レイアウトについて 2
ソースコード public class Listener 1 { public static void main(String[] args){ JFrame jf=new JFrame("Hello"); jf. set. Size(300, 100); JPanel panel=new JPanel(); jf. set. Content. Pane(panel); public class Counter. Label extends JLabel implements Mouse. Listener { private int c=0; Counter. Label(){ super(0+""); } public void mouse. Clicked(Mouse. Event arg 0) {} public void mouse. Entered(Mouse. Event arg 0) {} public void mouse. Exited(Mouse. Event arg 0) {} public void mouse. Released(Mouse. Event arg 0) {} JButton button=new JButton("Up"); panel. add(button); Counter. Label counter=new Counter. Label(); panel. add(counter); public void mouse. Pressed(Mouse. Event arg 0) { c++; set. Text(c+""); } button. add. Mouse. Listener(counter); jf. set. Visible(true); } } 前回より抜粋 } 使ってないメソッドも記述しないといけないのは無駄, とはいえJavaの文法上省けない. 3
ソース public class Adapter 1 { public static void main(String[] args) { JFrame frame=new JFrame(); frame. set. Size(300, 100); JPanel panel=new JPanel(); frame. set. Content. Pane(panel); public class Mouse. Label. Adapter extends Mouse. Adapter { private JLabel label; private int counter=0; Mouse. Label. Adapter(JLabel label){ this. label=label; } public void mouse. Pressed(Mouse. Event e){ counter++; label. set. Text(counter+""); } } JButton button=new JButton("Up"); JLabel label=new JLabel("0"); panel. add(button); panel. add(label); Mouse. Label. Adapter adapter=new Mouse. Label. Adapter(label); button. add. Mouse. Listener(adapter); frame. set. Visible(true); mouse. Pressed以外は 実装していない.( スーパークラスで空 実装されている) } } 5
Copy&Pasteはプログラミングが必要 public class Clip. Adapter extends Mouse. Adapter { JButton copy; JButton paste; JText. Area area; Clip. Adapter(JText. Area area, JButton copy, JButton paste){ this. area=area; this. copy=copy; this. paste=paste; } public class Text 4 { public void mouse. Pressed(Mouse. Event e){ public static void main(String[] args) { JButton b=(JButton)e. get. Source(); // 中略 if(b==copy){ JButton copy=new JButton("Copy"); area. copy(); JButton paste=new JButton("Paste"); }else if(b==paste){ JText. Area area=new JText. Area(10, 30); area. paste(); } Clip. Adapter clip=new Clip. Adapter(area, copy, paste); } copy. add. Mouse. Listener(clip); } paste. add. Mouse. Listener(clip); panel. add(copy); panel. add(paste); panel. add(new JScroll. Pane(area)); frame. set. Visible(true); } } 12
例 import javax. swing. *; public class Scroll 2 { public static void main(String[] args) { JFrame frame=new JFrame(); frame. set. Size(300, 200); JText. Area area=new JText. Area(10, 40); JScroll. Pane scroll=new JScroll. Pane(area); frame. get. Content. Pane(). add(scroll); frame. set. Visible(true); } } 包まないと下のようになる 21
例 Border. Layout 25
ソース public class Layout 5 { public static void main(String[] args) { JFrame frame=new JFrame(); frame. set. Size(600, 400); JPanel panel=(JPanel)frame. get. Content. Pane(); // レイアウトはデフォのBorderを利用 JPanel npanel=new JPanel(); // レイアウトはデフォルトのFlowを利用 JPanel wpanel=new JPanel(); wpanel. set. Layout(new Box. Layout(wpanel, Box. Layout. Y_AXIS)); for(int i=0; i<3; i++) for(int j=0; j<3; j++){ npanel. add(new JButton(i+"x"+j)); wpanel. add(new JButton(i+"-"+j)); } panel. add(npanel, Border. Layout. NORTH); panel. add(wpanel, Border. Layout. WEST); panel. add(new Text. Area(20, 40), Border. Layout. CENTER); panel. add(new JButton("push me"), Border. Layout. SOUTH); frame. set. Visible(true); } } 29
- Slides: 31