質問編集履歴

4

コードの修正

2015/08/04 19:09

投稿

fmams1994
fmams1994

スコア12

test CHANGED
File without changes
test CHANGED
@@ -16,15 +16,29 @@
16
16
 
17
17
  追記
18
18
 
19
- ウィンドウ左上にボタンを配置し、Math.toRadiansの引数を変数にしました。
19
+ 回答てくれた方アドバイスありがとうございました。
20
20
 
21
- ボタンをクリックた時に画像が傾くようにするにはどうコード書き足していけばよいの・・・わかりせん
21
+ なんとか作るとができました。しかしボタンを画像を傾けた後、ボタンの表示一時的消えてしまいま(マウスすとた表示されますが)。
22
+
23
+ 原因は何でしょうか?
22
24
 
23
25
 
24
26
 
25
27
  ※画像は下記のコードを実行した際の実行結果です。
26
28
 
27
29
  ![イメージ説明](fdb0fe997b80044ce20fc1af8fc783e0.png)
30
+
31
+
32
+
33
+ ↓ボタンを押すと・・・
34
+
35
+
36
+
37
+ ![イメージ説明](a22895bdf93f297b37f3de3548b78652.png)
38
+
39
+
40
+
41
+ 画像は傾くが、ボタンが表示されなくなる
28
42
 
29
43
 
30
44
 
@@ -35,6 +49,10 @@
35
49
  import java.awt.Graphics;
36
50
 
37
51
  import java.awt.Graphics2D;
52
+
53
+ import java.awt.event.ActionEvent;
54
+
55
+ import java.awt.event.ActionListener;
38
56
 
39
57
  import java.awt.geom.AffineTransform;
40
58
 
@@ -54,13 +72,15 @@
54
72
 
55
73
 
56
74
 
57
- public class ImageKatamuke2 extends JFrame{
75
+ public class ImageButtonKatamuke extends JFrame implements ActionListener{
58
76
 
59
-
77
+ public JButton addButton;
78
+
79
+ int rad = 0;
60
80
 
61
81
  public static void main(String[] args){
62
82
 
63
- JFrame f = new ImageKatamuke2();
83
+ JFrame f = new ImageButtonKatamuke();
64
84
 
65
85
  f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
66
86
 
@@ -74,9 +94,7 @@
74
94
 
75
95
 
76
96
 
77
-
78
-
79
- ImageKatamuke2(){
97
+ ImageButtonKatamuke(){
80
98
 
81
99
  JPanel p = new JPanel();
82
100
 
@@ -84,17 +102,33 @@
84
102
 
85
103
 
86
104
 
87
- JButton button1 = new JButton("角度変更");
105
+ addButton = new JButton("角度変更");
88
106
 
107
+ addButton.addActionListener(this);
108
+
89
- button1.setBounds(0, 0, 160, 30);
109
+ addButton.setBounds(0, 0, 160, 30);
90
110
 
91
111
 
92
112
 
93
- p.add(button1);
113
+ p.add(addButton);
94
114
 
95
115
 
96
116
 
97
117
  getContentPane().add(p, BorderLayout.CENTER);
118
+
119
+ }
120
+
121
+
122
+
123
+ public void actionPerformed(ActionEvent e){
124
+
125
+ if (e.getSource() == addButton){
126
+
127
+ rad += 15;
128
+
129
+ repaint();
130
+
131
+ }
98
132
 
99
133
  }
100
134
 
@@ -123,10 +157,6 @@
123
157
 
124
158
 
125
159
  if (readImage != null){
126
-
127
- int rad = 0;
128
-
129
-
130
160
 
131
161
  int sw = getWidth();//画面の幅を取得
132
162
 

3

コードを訂正

2015/08/04 19:09

投稿

fmams1994
fmams1994

スコア12

test CHANGED
File without changes
test CHANGED
@@ -69,10 +69,6 @@
69
69
  f.setTitle("画像表示");
70
70
 
71
71
  f.setVisible(true);
72
-
73
-
74
-
75
-
76
72
 
77
73
  }
78
74
 

2

追記、ボタン追加

2015/08/04 16:53

投稿

fmams1994
fmams1994

スコア12

test CHANGED
File without changes
test CHANGED
@@ -14,13 +14,23 @@
14
14
 
15
15
 
16
16
 
17
+ 追記
18
+
19
+ ウィンドウ左上にボタンを配置し、Math.toRadiansの引数を変数にしました。
20
+
21
+ このボタンをクリックした時に画像が傾くようにするにはどうコードを書き足していけばよいのか・・・わかりません
22
+
23
+
24
+
17
25
  ※画像は下記のコードを実行した際の実行結果です。
18
26
 
19
- ![イメージ説明](3b67cfda9f84713636dc46106aa58f3b.png)
27
+ ![イメージ説明](fdb0fe997b80044ce20fc1af8fc783e0.png)
20
28
 
21
29
 
22
30
 
23
31
  ```java
32
+
33
+ import java.awt.BorderLayout;
24
34
 
25
35
  import java.awt.Graphics;
26
36
 
@@ -36,11 +46,17 @@
36
46
 
37
47
  import javax.imageio.ImageIO;
38
48
 
49
+ import javax.swing.JButton;
50
+
39
51
  import javax.swing.JFrame;
52
+
53
+ import javax.swing.JPanel;
40
54
 
41
55
 
42
56
 
43
- public class ImageKatamuke2 extends JFrame {
57
+ public class ImageKatamuke2 extends JFrame{
58
+
59
+
44
60
 
45
61
  public static void main(String[] args){
46
62
 
@@ -53,6 +69,36 @@
53
69
  f.setTitle("画像表示");
54
70
 
55
71
  f.setVisible(true);
72
+
73
+
74
+
75
+
76
+
77
+ }
78
+
79
+
80
+
81
+
82
+
83
+ ImageKatamuke2(){
84
+
85
+ JPanel p = new JPanel();
86
+
87
+ p.setLayout(null);
88
+
89
+
90
+
91
+ JButton button1 = new JButton("角度変更");
92
+
93
+ button1.setBounds(0, 0, 160, 30);
94
+
95
+
96
+
97
+ p.add(button1);
98
+
99
+
100
+
101
+ getContentPane().add(p, BorderLayout.CENTER);
56
102
 
57
103
  }
58
104
 
@@ -82,27 +128,31 @@
82
128
 
83
129
  if (readImage != null){
84
130
 
131
+ int rad = 0;
132
+
133
+
134
+
85
135
  int sw = getWidth();//画面の幅を取得
86
136
 
87
- int sh = getHeight();//画面の高さを取得
137
+ int sh = getHeight();//画面の高さを取得
88
138
 
89
- int iw = readImage.getWidth(this);//イメージの幅を取得
139
+ int iw = readImage.getWidth(this);//イメージの幅を取得
90
140
 
91
- int ih = readImage.getHeight(this);//イメージの高さを取得
141
+ int ih = readImage.getHeight(this);//イメージの高さを取得
92
142
 
93
- int x = (sw-iw)/2;//イメージが横中央になる位置を計算
143
+ int x = (sw-iw)/2;//イメージが横中央になる位置を計算
94
144
 
95
- int y = (sh-ih)/2;//イメージが縦中央になる位置を計算
145
+ int y = (sh-ih)/2;//イメージが縦中央になる位置を計算
96
146
 
97
147
 
98
148
 
99
- g2.clearRect(0, 0, sw, sh); //画像枠外の背景を塗り潰す
149
+ g2.clearRect(0, 0, sw, sh); //画像枠外の背景を塗り潰す
100
150
 
101
- AffineTransform at = new AffineTransform();
151
+ AffineTransform at = new AffineTransform(); //new演算子を使いオブジェクトを作成
102
152
 
103
- at.setToRotation(Math.toRadians(45), sw/2, sh/2); //Math.toRadiansの引数の数字を変えると、その数字分角度が変わる
153
+ at.setToRotation(Math.toRadians(rad), sw/2, sh/2); //Math.toRadiansの引数の数字を変えると、その数字分角度が変わる
104
154
 
105
- g2.setTransform(at);
155
+ g2.setTransform(at); //画像を指定した角度傾けて上書き
106
156
 
107
157
  g2.drawImage(readImage,x,y,this);
108
158
 

1

追加

2015/08/04 16:41

投稿

fmams1994
fmams1994

スコア12

test CHANGED
File without changes
test CHANGED
@@ -9,6 +9,8 @@
9
9
  Math.toRadiansの引数を変数にして、そこから何かすればいいのかなと思うのですが・・・
10
10
 
11
11
  よろしくおねがいします。
12
+
13
+ 回答にコードも併せて記してくれるとありがたいです。
12
14
 
13
15
 
14
16