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 コンポーネントを長方形のグリッドに配置します。セル