質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.33%

  • Swing

    232questions

    SwingはJavaに標準で付属するグラフィック関連のクラスライブラリを指します。

SwingのmouseDraggedについて

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 402

Launcher

score 13

図のようなlauncherを制作しています。

フレームの上にパネルをのせ、そのうえにボタンを置いています。

ソースは以下の通りです
public class JFrameSample2 extends JFrame implements MouseListener, MouseMotionListener{
private final Point startPt = new Point();

private JPanel panel;
//private ArrayList<RoundButton> ButtonList;
private RoundButton[] button;

/**

  • Launch the application.
    */
    public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
    public void run() {
    try {
    JFrameSample2 frame = new JFrameSample2();
    frame.setVisible(true);

} catch (Exception e) {
e.printStackTrace();
}
}
});
}

/**

  • Create the frame.
    */
    public JFrameSample2() {

//this.setContentPane(new JPanel());
this.setPreferredSize(new Dimension(400, 400));
this.setLocation(750, 150);

//常に最前面に表示
this.setAlwaysOnTop(true);

//背景を透明あるいは半透明にする場合、
//FrameはundecoratedにしないとIllegalComponentStateExceptionがスローされる
this.setUndecorated(true);
this.setBackground(new Color(50,50,50,50));

//ウィンドウ範囲を示す枠をつけておく
this.getRootPane().setBorder(new LineBorder(new Color(50,50,50,50)));

this.pack();
//this.setVisible(true);
//パネルの作成
panel = new JPanel();
//パネル背景の透明化
panel.setBackground(new Color(50,50,50,50));
//layoutの無効
panel.setLayout(null);
//フレームにパネルを乗っける
this.getContentPane().add(panel);

//CreateButtonオブジェクトの生成
CreateButton crtButton = new CreateButton();
button = crtButton.createButton(8);

for(int i=0;i<button.length;i++){
button[i].addActionListener(new ClickListener());
panel.add(button[i]);
}
//ここがわかりません。
//ここでボタンをさくせいしています。そのボタンを押したときに
//フレームの場所の移動ができるようにしたいです。
JButton moveButton = new JButton("Click Me!");
moveButton.addMouseListener(this);
moveButton.addMouseMotionListener(this);
moveButton.setLocation(200,200);
addMouseListener(this);
addMouseMotionListener(this);
panel.add(moveButton);

// パネルがキーボードを受け付けるようにする(必須)
setFocusable(true);
addKeyListener(new ClosekeyListener());

requestFocus();

}
public void mousePressed(MouseEvent me) {
int x = me.getX();
int y = me.getY();
System.out.println(x);
System.out.println(y);
startPt.setLocation(me.getPoint());
}
public void mouseDragged(MouseEvent me) {
System.out.println("ここに入った");
Point eventLocationOnScreen = me.getLocationOnScreen();
setLocation(eventLocationOnScreen.x - startPt.x, eventLocationOnScreen.y - startPt.y);
}

@Override
public void mouseMoved(MouseEvent e) {
// TODO 自動生成されたメソッド・スタブ

}

@Override
public void mouseClicked(MouseEvent e) {
// TODO 自動生成されたメソッド・スタブ

}

@Override
public void mouseEntered(MouseEvent e) {
// TODO 自動生成されたメソッド・スタブ

}

@Override
public void mouseExited(MouseEvent e) {
// TODO 自動生成されたメソッド・スタブ

}
@Override
public void mouseReleased(MouseEvent e) {
// TODO 自動生成されたメソッド・スタブ

}
//ボタンクリック時の操作
class ClickListener implements ActionListener{
public void actionPerformed(ActionEvent e){
File file = null;        //ファイルのパスを入れる変数

if(e.getSource() == button[0]){    //押されたボタンがbutton1だった時の処理
file = new File("c:");
}else if(e.getSource() == button[1]){        //押されたボタンがbutton4だった時の処理
file = new File("C:/Program Files (x86)/Google/Chrome/Application/chrome.exe");
}else if(e.getSource() == button[2]){        //押されたボタンがbutton2だった時の処理
file = new File("C:/Program Files (x86)/Google/Chrome/Application/chrome.exe");
}else if(e.getSource() == button[3]){        //押されたボタンがbutton3だった時の処理
file = new File("C:/Program Files (x86)/Google/Chrome/Application/chrome.exe");
}else if(e.getSource() == button[4]){        //押されたボタンがbutton4だった時の処理
file = new File("C:/Program Files (x86)/Google/Chrome/Application/chrome.exe");
}else if(e.getSource() == button[5]){        //押されたボタンがbutton4だった時の処理
file = new File("C:/Program Files (x86)/Google/Chrome/Application/chrome.exe");
}else if(e.getSource() == button[6]){        //押されたボタンがbutton4だった時の処理
file = new File("C:/Program Files (x86)/Google/Chrome/Application/chrome.exe");
}else if(e.getSource() == button[7]){        //押されたボタンがbutton4だった時の処理
file = new File("C:/Program Files (x86)/Google/Chrome/Application/chrome.exe");
}else if(e.getSource() == button[8]){        //押されたボタンがbutton4だった時の処理
file = new File("C:/Program Files (x86)/Google/Chrome/Application/chrome.exe");
}
Desktop desktop = Desktop.getDesktop();
try {
desktop.open(file);
} catch (IOException e1) {
// TODO 自動生成された catch ブロック
e1.printStackTrace();
}
}
}
class ClosekeyListener extends KeyAdapter {
@Override
public void keyPressed(KeyEvent e) {
int keycode = e.getKeyCode();
if (keycode == KeyEvent.VK_ALT){
System.exit(0);
}
}
}
}

なぜかボタンが表示されません。
(200,200)がフレームの真ん中の座標になります。
ボタンを表示させたいです。
イメージ説明

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

同じタグがついた質問を見る

  • Swing

    232questions

    SwingはJavaに標準で付属するグラフィック関連のクラスライブラリを指します。