私たちは、製図板が完了していると、メイン今日はいくつかの新機能を追加することで変更することができます。
ドロー曲線
曲線を描くとのMouseMotionListenerを使用する必要性に似た線を描くというアイデア。
- まず、この時点で「カーブ」にボタンを追加し、我々は、表示だけでtextArr []に追加することが循環ボタンの利点を追加しました。
// 添加组件(按钮)
String textArr[] = {"改变粗细", "直线","曲线", "点", "迭代" ,"平面山水画","地貌图"};
for (String text : textArr) {
JButton btn = new JButton(text);
Dimension botton = new Dimension(100, 30);
btn.setPreferredSize(botton);
ui.add(btn);
btn.addActionListener(mousel);
}
- 我々はのMouseMotionListenerとのMouseListenerが同じクラスに実装されていますが、フォームまたはコンポーネントにリスナーを追加するときも別々に添加されます場合でも、のMouseListenerを使用する前に、音符にリスナーを設定します
MyListener mousel = new MyListener();
ui.addMouseListener(mousel);
ui.addMouseMotionListener(mousel);
- メソッドリスナーが長いマウスダウンなどとして、このリスナーを実現MouseDragged、それは、追加のアドオンループを循環されていないでしょう。
public void mouseDragged(MouseEvent e) {
if (bottonText.equals("曲线")) {
g.fillOval(e.getX(), e.getY(), r, r);
}
}
出力
関数曲線の描画を実現しますが、まだ問題があります。私たちは、レンダリング速度をスピードアップする場合MouseDraggedは、遅すぎるの座標値を返し、曲線の断続的な場合は、表示されます。
線の太さや位置を変更する第二に、
我々は、半径rを変化させることにより、線と点の幅を変更することができ、これらのパターン、fillOval点と線の部分を描画する方法を使用します。
if (r > 20)
r -= 20;
else
r += 5;
我々は、ギアチェンジの複数を達成することができるように、半径r及び最大設定変更間隔を変えることによって制御されます。
出力
次に、私はサイズを調整するために、比較的スムーズにスライダーを達成するためのGridBagLayoutクラスを使用しようとします。
第三に、メニューバーを追加します
私達はちょうど機能の実装は、ブログの背後に配置され、メニューバーコンポーネントを追加します。
それのJMenuBar、JMenuにとのJMenuItem 3つのクラスが必要です。
ボタンと同じように追加、我々は将来の変更を容易にするため、同じコンポーネントを追加するforループを使用します。
//添加菜单栏
JMenuBar menubar = new JMenuBar();
ui.setJMenuBar(menubar);
//设置菜单和子菜单文本
String MenuTextArr[] = { "文件", "编辑", "帮助" };
String MenuItem[][] = { { "新建文件", "打开文件", "保存文件", "关闭文件" }, { "清空", "撤销" }, { "使用说明", "制作人员" } };
//添加菜单和子菜单
for (int i=0;i<MenuTextArr.length;i++) {
JMenu menu = new JMenu(MenuTextArr[i]);
//将子菜单添加到对应菜单上
for(int j=0;j<MenuItem[i].length;j++) {
JMenuItem subMenu=new JMenuItem(MenuItem[i][j]);
subMenu.addActionListener(mousel);
menu.add(subMenu);
}
//将菜单添加到菜单栏上
menubar.add(menu);
}
概要
より多くの機能と改善点がありますが、それは後のブログで言及されます。