私はeasyly作るために、Javaで電卓をやっている、とのJTextFieldにドキュメントフィルタを入れないでください。私はJTextFieldのは編集できません作り、キーリスナーを追加することを選んだが、あなたはデ・削除ボタンを押すと、エラー音がします。
私は、システムの音を変更している、と私は音が、それが「所定のBIP」で作られた、と音の「Windowsの背景」を作るということを発見、構成の変更、システムの音に行きました。私は私のオプションを変更することができますし、音を聞くが、私はこのゲームは、インターネットでそれをダウンロードしたくありません。
ここでは簡単な例です:あなたがテキストフィールドでDeleteキーを押すとそれが音を作るつもり。
public Example() {
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setBounds(0, 0,250,200);
setLayout(null);
javax.swing.JTextField jTextField1 = new javax.swing.JTextField();
jTextField1.setEditable(false);
jTextField1.setBounds(30,50,180,60);
add(jTextField1);
}
public static void main(String args[]) {
Example a = new Example();
a.setVisible(true);
}
}
そのコードでは、テキストフィールドは、次のコードをテキストフィールドに、音を作るつもりはないが、編集できませんでした。
public Example() {
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setBounds(0, 0,250,200);
setLayout(null);
javax.swing.JTextField jTextField1 = new javax.swing.JTextField();
jTextField1.setEditable(true);
jTextField1.setBounds(30,50,180,60);
add(jTextField1);
}
public static void main(String args[]) {
Example a = new Example();
a.setVisible(true);
}
}
テキストフィールドが編集可能であるため、それはです。
I'willはあなたが私を助けることができるならば、コードで音どのように修正するか、どのように変化するシステムに私に言って、感謝、または何でもあなたが私を助けることができると思います。
あなたはJTextFieldのが編集可能である、と押されているキーへのOS依存の応答である場合にも発生しますデルキーを押すから取得していることを音。これを回避する方法は、それが押されたことを登録するから、デルのキーを阻止することであり、これを行う方法は、GUIで無応答原因デルキーを作るためにキーバインディングを使用することです - 応答で行い、何もアクションを与えますテキストフィールドにフォーカスがあるときデルキーのビーイングに押し付けます。例えば:
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import javax.swing.*;
@SuppressWarnings("serial")
public class Example extends JFrame {
public Example() {
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
// setBounds(0, 0,250,200);
// setLayout(null);
JPanel panel = new JPanel();
int gap = 40;
panel.setBorder(BorderFactory.createEmptyBorder(gap, gap, gap, gap));
JTextField jTextField1 = new JTextField(20);
jTextField1.setEditable(false);
panel.add(jTextField1);
// get input and action maps to do key binding
InputMap inputMap = jTextField1.getInputMap(JComponent.WHEN_FOCUSED);
ActionMap actionMap = jTextField1.getActionMap();
// the key stroke that we want to change bindings on: delete key
KeyStroke delKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0);
// tell the input map to map the key stroke to a String of our choosing
inputMap.put(delKeyStroke, delKeyStroke.toString());
// map this same key String to an action that does **nothing**
actionMap.put(delKeyStroke.toString(), new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
// do nothing
}
});
add(panel);
}
public static void main(String args[]) {
SwingUtilities.invokeLater(() -> {
Example example = new Example();
example.pack();
example.setLocationRelativeTo(null);
example.setVisible(true);
});
}
}
サイド勧告:
- これは望ましくないと、非標準の動作につながる可能性として、テキストコンポーネントとKeyListenersを使用しないでください。メソッドでは、DocumentListenerとDocumentFilters代わりを使用してください。
- このため、テキストコンポーネントの境界を設定しないでも、特にそれらがJScrollPanes内に配置されているときに、スクロールバーを表示しないJTextAreasで、望ましくないと非標準の行動につながります。代わりに、そのようなカラムとフォントプロパティとしてテキストコンポーネントのプロパティを設定します。