相关疑难解决方法(0)

将JFileChooser置于所有窗口之上

我似乎对我的文件选择器对话的非常简单的实现有一个问题,这需要我每次都要最小化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 jfilechooser openfiledialog

19
推荐指数
2
解决办法
2万
查看次数

检测由单击摇摆生成的MouseEvent上的Shift修改器

我正在使用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)

我究竟做错了什么?我该如何修复我的代码?

java swing mouseevent modifiers

7
推荐指数
1
解决办法
1万
查看次数

JTextArea setText()和UndoManager

我正在使用一个UndoManager来捕捉我的变化JTextArea.

setText()然而,该方法删除所有内容,然后粘贴文本.当我撤消时,我首先看到一个空白区域,然后它会显示它之前有哪些文本.

如何重现:

  1. 运行以下代码
  2. 单击setText()按钮
  3. CTRL+Z撤消(你会看到一个空的textarea!)
  4. CTRL+Z撤消(您将看到实际的先前文字)

我想跳过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)

java swing undo-redo jtextarea

3
推荐指数
1
解决办法
2918
查看次数