我似乎对我的文件选择器对话的非常简单的实现有一个问题,这需要我每次都要最小化Netbeans才能到达它,并且特别是现在通过测试它变得非常令人沮丧.
我已经在网上看到了一些解决方案,包括SO,但似乎没有一个可以做到这一点,而其他一些解决方案对我目前的水平看起来非常冗长和复杂.
private void fileSearch() {
JFileChooser fileSelect = new JFileChooser();
int returnVal = fileSelect.showOpenDialog(null);
String pathToFile;
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = fileSelect.getSelectedFile();
pathToFile = file.getAbsolutePath();
try {
P.binaryFileToHexString(pathToFile);
} catch (Exception e) {
System.out.print("Oops! there was an error there..." + e);
}
System.out.println("\nYou chose to open this file: " + file.getName());
}
}
Run Code Online (Sandbox Code Playgroud)
我的一些尝试包括使用;
.requestFocus();
.requestFocusInWindow();
.setVisible();
Run Code Online (Sandbox Code Playgroud)
我可以设置一个特定的属性/方法来解决问题吗?
我正在使用Java Swing在GUI应用程序中处理一些MouseEvent.
从现在开始我在mousePressed方法中分析鼠标事件,只是为了确定是否发生了左击或右击.
我的代码是:
public void mousePressed(MouseEvent me) {
if (me.getModifiers == InputEvent.BUTTON1_DOWN_MASK){
//left click
}else if (me.getModifiers == InputEvent.BUTTON3_DOWN_MASK){
//right click
}
Run Code Online (Sandbox Code Playgroud)
现在我的应用程序变得越来越复杂了,我还需要检查鼠标左键单击时是否按下了Shift键.我想做这样的事情:
public void mousePressed(MouseEvent me) {
if (me.getModifiers == InputEvent.BUTTON1_DOWN_MASK && me.isShiftDown()){
//left click
}
Run Code Online (Sandbox Code Playgroud)
现在这不起作用.特别是如果我在按住SHIFT的同时单击左按钮,则isShiftDown返回true(rigth.我期待的是),但现在似乎修改器也被更改并且与BUTTON1_DOWN_MASK的比较失败.
me.getModifiers == InputEvent.BUTTON1_DOWN_MASK //failed..modifiers are changed
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我该如何修复我的代码?
我正在使用一个UndoManager来捕捉我的变化JTextArea.
setText()然而,该方法删除所有内容,然后粘贴文本.当我撤消时,我首先看到一个空白区域,然后它会显示它之前有哪些文本.
如何重现:
setText()按钮我想跳过3).
import javax.swing.AbstractAction;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.KeyStroke;
import javax.swing.event.UndoableEditEvent;
import javax.swing.event.UndoableEditListener;
import javax.swing.text.Document;
import javax.swing.undo.CannotRedoException;
import javax.swing.undo.CannotUndoException;
import javax.swing.undo.UndoManager;
import java.awt.event.ActionEvent;
import javax.swing.JButton;
import java.awt.event.ActionListener;
@SuppressWarnings("serial")
public class JTextComponentSetTextUndoEvent extends JFrame
{
JTextArea area = new JTextArea();
public JTextComponentSetTextUndoEvent()
{
setSize(300, 300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
getContentPane().setLayout(null);
area.setText("Test");
area.setBounds(0, 96, 146, 165);
getContentPane().add(area);
JButton btnSettext = new JButton("setText()");
btnSettext.addActionListener(new ActionListener()
{
public void …Run Code Online (Sandbox Code Playgroud)