JavaのMouseListenerとMouseMotionListenerの違いは何ですか?
MouseListenerを実装できます MouseMotionListener を実装できるのに対し、マウスイベントの処理中にマウスが安定している場合のインターフェイス マウスイベントの処理中にマウスが動いているときのインターフェース。
マウスリスナー
MouseEvent 押すと発火します 、リリース またはクリック (押してから離す)ソースオブジェクトにマウスボタン(左または右ボタン)を置くか、ソースオブジェクトからマウスポインタを(Enter)および離れる(exit)に置きます。
MouseListener インターフェイスは次の5つの抽象メソッドを宣言します
構文
public void mouseClicked(MouseEvent evt) public void mousePressed(MouseEvent evt) public void mouseReleased(MouseEvent evt) public void mouseEntered(MouseEvent evt) public void mouseExited(MouseEvent evt)
例
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class MouseListenerTest extends JFrame implements MouseListener { private JTextField tfMouseX, tfMouseY; public MouseListenerTest() { setLayout(new FlowLayout()); add(new Label("X-Click: ")); tfMouseX = new JTextField(10); tfMouseX.setEditable(false); add(tfMouseX); add(new Label("Y-Click: ")); tfMouseY = new JTextField(10); tfMouseY.setEditable(false); add(tfMouseY); addMouseListener(this); setTitle("MouseListener Test"); setLocationRelativeTo(null); setSize(350, 100); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } public static void main(String[] args) { new MouseListenerTest(); } @Override public void mouseClicked(MouseEvent evt) { tfMouseX.setText(evt.getX() + ""); tfMouseY.setText(evt.getY() + ""); } // Need to provide an empty body to compile. @Override public void mousePressed(MouseEvent evt) { } @Override public void mouseReleased(MouseEvent evt) { } @Override public void mouseEntered(MouseEvent evt) { } @Override public void mouseExited(MouseEvent evt) { } }
出力
MouseMotionListener
MouseEvent 移動したときにも解雇されます およびドラッグ ソースオブジェクトのマウスポインタ。ただし、 MouseMotionListenerを使用する必要があります マウスの移動とマウスのドラッグを処理します。
MouseMotionListener インターフェイスは、次の2つの抽象メソッドを宣言します
構文
public void mouseDragged(MouseEvent e) public void mouseMoved(MouseEvent e)
例
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class MouseMotionListenerTest extends JFrame implements MouseListener, MouseMotionListener { private JTextField tfMouseClickX, tfMouseClickY; private JTextField tfMousePositionX, tfMousePositionY; public MouseMotionListenerTest() { setLayout(new FlowLayout()); add(new Label("X-Click: ")); tfMouseClickX = new JTextField(10); tfMouseClickX.setEditable(false); add(tfMouseClickX); add(new Label("Y-Click: ")); tfMouseClickY = new JTextField(10); tfMouseClickY.setEditable(false); add(tfMouseClickY); add(new JLabel("X-Position: ")); tfMousePositionX = new JTextField(10); tfMousePositionX.setEditable(false); add(tfMousePositionX); add(new JLabel("Y-Position: ")); tfMousePositionY = new JTextField(10); tfMousePositionY.setEditable(false); add(tfMousePositionY); addMouseListener(this); addMouseMotionListener(this); setTitle("MouseMotionListener Test"); setSize(400, 120); setLocationRelativeTo(null); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } public static void main(String[] args) { new MouseMotionListenerTest(); } @Override public void mouseClicked(MouseEvent evt) { tfMouseClickX.setText(evt.getX() + ""); tfMouseClickY.setText(evt.getY() + ""); } // Need to provide an empty body for compilation @Override public void mousePressed(MouseEvent evt) { } @Override public void mouseReleased(MouseEvent evt) { } @Override public void mouseEntered(MouseEvent evt) { } @Override public void mouseExited(MouseEvent evt) { } @Override public void mouseMoved(MouseEvent evt) { tfMousePositionX.setText(evt.getX() + ""); tfMousePositionY.setText(evt.getY() + ""); } // Need to provide an empty body to compile @Override public void mouseDragged(MouseEvent evt) { } }
出力
-
JavaのJFrameとJDialogの違いは何ですか?
JFrame フレームに追加されたコンポーネントはそのコンテンツと呼ばれ、 contentPaneによって管理されます。 。 JFrameにコンポーネントを追加するには 、 contentPaneを使用する必要があります 代わりに。 JFrame タイトルのウィンドウが含まれています 、境界線 、(オプション)メニュー バー およびユーザー -指定 コンポーネント 。 JFrame 移動できます 、サイズ変更 、アイコン化 JComponentのサブクラスではありません 。 デフォルトでは、JFrameは左上の角に表示されます 画面のr。指定した場所にフレームを表示するには
-
JavaのGridLayoutとGridBagLayoutの違いは何ですか?
GridLayout すべてのコンポーネントを長方形のグリッドに配置し、同じサイズの長方形に分割します 各コンポーネントは長方形の中に配置されますが、 GridBagLayout 柔軟です レイアウト マネージャー コンポーネントを垂直方向と水平方向に整列させます コンポーネントが同じサイズである必要はありません。各GridBagLayout オブジェクトは、動的な長方形のセルのグリッドを維持します 各コンポーネントがコンポーネントと呼ばれる1つ以上のセルを占有します 表示 エリア 。 GridLayout GridLayout コンポーネントを長方形のグリッドに配置します。セル