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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

3081閲覧

Javaから、Windowsのエクスプローラーを呼び出したいのですが、うまく行きません。

akirasada1972

総合スコア41

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2020/10/28 14:21

編集2020/10/28 21:17

Javaから、Windowsのエクスプローラーを呼び出したいのですが、うまく行きません。
問題の部分。
ActionListenerの呼び出しあたりが、自信がありません。

java

1 menuitem1_2.addActionListener(new ActionListener() { 2// Desktop.getDesktop().open(new File("c:\")); 3 Runtime rt = Runtime.getRuntime(); 4 String cmd = "explorer c:\"; 5 rt.exec(cmd); 6 }); 7

エラー1
イメージ説明
エラー2
イメージ説明
どちらでやっても、うまくいきません。

全体のコード

java

1//package net.ddns.fantasia; 2 3import java.awt.event.KeyEvent; 4import java.awt.event.KeyListener; 5import java.awt.event.ActionListener; 6import java.awt.event.ActionEvent; 7import java.awt.BorderLayout; 8import java.awt.Color; 9import java.awt.Component; 10import java.awt.Container; 11import java.awt.Graphics; 12import java.awt.Dimension; 13import java.awt.Desktop; 14 15import java.lang.*; 16import javax.swing.*; 17import javax.swing.event.*; 18import java.io.IOException; 19import java.io.File; 20import java.io.InputStream; 21import java.io.ByteArrayInputStream; 22import javax.sound.sampled.*; 23 24public class SynthAkira extends JFrame { 25 26 public static void main(String[] args){ 27 28 SynthAkira akira = new SynthAkira("Synth Akira"); 29 akira.setVisible(true); 30 } 31 32 SynthAkira(String title) throws IOExceotion { 33 setTitle(title); 34 setBounds(100, 100, 600, 400); 35 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 36 37 JMenuBar menubar = new JMenuBar(); 38 39 JMenu menu1 = new JMenu("File"); 40 JMenu menu2 = new JMenu("Edit"); 41 42 menubar.add(menu1); 43 menubar.add(menu2); 44 45 JMenuItem menuitem1_1 = new JMenuItem("New"); 46 JMenuItem menuitem1_2 = new JMenuItem("Open"); 47 JMenuItem menuitem1_3 = new JMenuItem("Save"); 48 JMenuItem menuitem1_4 = new JMenuItem("Exit"); 49 50 JMenuItem menuitem2_1 = new JMenuItem("Cut"); 51 JMenuItem menuitem2_2 = new JMenuItem("Copy"); 52 JMenuItem menuitem2_3 = new JMenuItem("Paste"); 53 54 menuitem1_2.addActionListener(new ActionListener() { 55// Desktop.getDesktop().open(new File("c:\")); 56 Runtime rt = Runtime.getRuntime(); 57 String cmd = "explorer c:\"; 58 rt.exec(cmd); 59 }); 60 61 menuitem1_3.addActionListener(new CreateWav()); 62 63 menu1.add(menuitem1_1); 64 menu1.add(menuitem1_2); 65 menu1.add(menuitem1_3); 66 menu1.add(menuitem1_4); 67 68 menu2.add(menuitem2_1); 69 menu2.add(menuitem2_2); 70 menu2.add(menuitem2_3); 71 72 setJMenuBar(menubar); 73 74 Container contentPane = getContentPane(); 75 contentPane.add(new Main(), BorderLayout.CENTER); 76 } 77} 78 79class Main extends JPanel { 80 81 static byte[] wave_data = new byte[44100]; 82 83 static JSlider slider1 = new JSlider(0, 1000); 84 static JSlider slider2 = new JSlider(0, 1000); 85 JPanel p1; 86 JPanel p2; 87 JPanel p3; 88 static JPanel p4; 89 JPanel p5; 90 JPanel p6, p7, p8, p9; 91 static JLabel label1; 92 static JLabel label2; 93 static JLabel label3; 94 static JLabel label4; 95 96 Main() { 97 98 slider1.setValue(100); 99 slider1.setFocusable(false); 100 slider1.addChangeListener(new Slider()); 101 slider2.setValue(100); 102 slider2.setFocusable(false); 103 slider2.addChangeListener(new Slider()); 104 105 p1 = new JPanel(); 106 p1.add(slider1); 107 p1.add(slider2); 108 109 label1 = new JLabel(); 110 label2 = new JLabel(); 111 label1.setText("値:"+slider1.getValue()); 112 label2.setText("値:"+slider2.getValue()); 113 114 p3 = new JPanel(); 115 p3.add(label1, BorderLayout.EAST); 116 p3.add(label2, BorderLayout.CENTER); 117 118 p7 = new JPanel(); 119 p8 = new JPanel(); 120 Key key = new Key(); 121 p7.addKeyListener(key); 122 p7.setFocusable(true); 123 124 p2 = new JPanel(); 125 p2.setLayout(new BorderLayout()); 126 p2.add(p1, BorderLayout.NORTH); 127 p2.add(p3, BorderLayout.CENTER); 128 p2.add(p7, BorderLayout.SOUTH); 129 130 label3 = new JLabel(""); 131 p4 = new JPanel(); 132 p4.setPreferredSize(new Dimension(600, 200)); 133 134 p4.setLayout(new BorderLayout()); 135 p4.add(label3, BorderLayout.NORTH); 136 p4.add(new Paint(), BorderLayout.CENTER); 137 138 p9 = new JPanel(); 139 label4 = new JLabel(""); 140 p9.add(label4); 141 142 setLayout(new BorderLayout()); 143 add(p2, BorderLayout.NORTH); 144 add(p4, BorderLayout.CENTER); 145 add(p9, BorderLayout.SOUTH); 146// p5.PpsetPreferredSize(new Dimension(600, 350)); 147 } 148} 149class Key implements KeyListener { 150 151 boolean flag = true; 152 153 public void keyPressed(KeyEvent e) { 154 Main.label3.setText(e.getKeyText(e.getKeyCode()) + "が押されました。"); 155 156 if (flag) { 157 if(e.getKeyCode() == KeyEvent.VK_N) { 158 new Sound(1); 159 Main.label4.setText("ただ今の、波形: sin(" + (float)(Sound.l1*2) + "π) x cos(" + (float)(Sound.l2*2) + "π)"); 160 }else if(e.getKeyCode() == KeyEvent.VK_M) { 161 new Sound(2); 162 Main.label4.setText("ただ今の、波形: sin("+ (float)(2*Sound.l1*2) + "π) x cos(" + (float)(2*Sound.l2*2) + "π)"); 163 } 164 flag = false; 165 } 166 167 Main.p4.add(new Paint()); 168 } 169 170 public void keyReleased(KeyEvent e) { 171 172 Sound.clip.stop(); 173 flag = true; 174 } 175 public void keyTyped(KeyEvent e) {} 176} 177 178class Paint extends JPanel { 179 180 protected void paintComponent(Graphics g) { 181 super.paintComponent(g); 182 g.setColor(Color.RED); 183 for(int i = 0; i < (Main.wave_data.length/200-1); i++) { 184 g.drawLine(i*2,128-Main.wave_data[i*200],(i+1)*2,128-Main.wave_data[(i+1)*200]); 185 } 186 } 187} 188 189class Sound { 190 191static Clip clip; 192static double l1, l2; 193 194 Sound(int i) { 195 l1 = i*Main.slider1.getValue()/44100.0; 196 l2 = i*Main.slider2.getValue()/44100.0; 197 for(int j=0;j<Main.wave_data.length;j++){ 198 Main.wave_data[j]= (byte)(110*(Main.wave_data.length-(j+1))/Main.wave_data.length*Math.sin((j*l1)*Math.PI*2) 199 *Math.cos((j*l2)*Math.PI*2)); 200 } 201 202 try{ 203 AudioFormat frmt= new AudioFormat(44100,8,2,true,false); 204 DataLine.Info info= new DataLine.Info(Clip.class,frmt); 205 clip= (Clip)AudioSystem.getLine(info); 206 clip.open(frmt,Main.wave_data,0,Main.wave_data.length); 207 clip.start(); 208 } 209 catch(Exception e){e.printStackTrace(System.err);} 210 } 211} 212 213class Slider implements ChangeListener { 214 public void stateChanged(ChangeEvent e) { 215 Main.label1.setText("値:"+Main.slider1.getValue()); 216 Main.label2.setText("値:"+Main.slider2.getValue()); 217} 218} 219 220class CreateWav implements ActionListener { 221 public void actionPerformed(ActionEvent event) { 222 AudioFormat frmt= new AudioFormat(44100,8,1,true,false); 223 AudioInputStream ais = new AudioInputStream( 224 new ByteArrayInputStream(Main.wave_data) 225 ,frmt 226 ,Main.wave_data.length); 227 228 try { 229 AudioSystem.write( 230 ais 231 ,AudioFileFormat.Type.WAVE 232 ,new File("test.wav")); 233 } 234 catch(Exception e) { 235 e.printStackTrace(); 236 } 237 } 238} 239

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2020/10/28 14:43

エラーメッセージと提示のコードが全く合ってませんが。 どうしましょうか
gentaro

2020/10/28 15:16

キャプチャしたエラーはコメントアウトされたコードの箇所に見えるけど、コメントアウトした部分の問題を聞きたいんでしょうか。 そうでないなら、コメントアウトした結果の現在のコードで不具合があるのかどうかを質問文に書かないと意味ないのでは。
guest

回答1

0

ベストアンサー

new ActionListener() したら、その中の actionPerformedメソッドを
オーバーライドしないといけません。

diff

1- public static void main(String[] args){ 2+ public static void main(String[] args) throws IOException { 3 4- SynthAkira(String title) throws IOExceotion { 5+ SynthAkira(String title) throws IOException { 6 7 menuitem1_2.addActionListener(new ActionListener() { 8 // Desktop.getDesktop().open(new File("c:\")); 9- Runtime rt = Runtime.getRuntime(); 10- String cmd = "explorer c:\"; 11- rt.exec(cmd); 12- }); 13+ public void actionPerformed(ActionEvent event) { 14+ Runtime rt = Runtime.getRuntime(); 15+ String cmd = "explorer c:\"; 16+ try { 17+ rt.exec(cmd); 18+ } catch (IOException e) { e.printStackTrace(); } 19+ } 20+ });

投稿2020/10/28 22:06

kazuma-s

総合スコア8224

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問