按下按钮时无法显示JOptionPane

时间:2013-06-18 04:07:37

标签: java swing jbutton joptionpane jtextpane

所以我有以下代码:

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextPane;

@SuppressWarnings("serial")
public class Window extends JPanel implements ActionListener {

public static JTextPane text = new JTextPane();
public static BorderLayout layout = new BorderLayout();
public static JButton debug = new JButton("Debug");
public static boolean isDebugPressed = false;
public static JFrame frame = new JFrame();

public Window(){
    debug.addActionListener(this);
    this.setLayout(layout);
    this.add(debug,BorderLayout.NORTH);
    this.add(text,BorderLayout.CENTER);


}

public static void main(String[] args){
    Window window = new Window();
    frame.setLayout(layout);
    frame.setSize(new Dimension(600,600));
    frame.setTitle("QuickScript Compiler");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setResizable(false);
    frame.setVisible(true);
    frame.setLocationRelativeTo(null);
    frame.add(window);
    debug.setActionCommand("debug");
    if (isDebugPressed){
        JOptionPane.showMessageDialog(frame, "Output: " + text.getText().toString() , "Debugging", JOptionPane.PLAIN_MESSAGE);
    }
}

@Override
public void actionPerformed(ActionEvent e) {
    if (e.getActionCommand().equals("debug")){
        isDebugPressed = true;
        System.out.println("true");
    }

}

当我按下调试按钮时,会弹出一个框,显示我在文本窗格内输入的内容,但没有显示任何内容。我该如何解决?我有一种感觉,我可能错过了一些非常重要的东西,但我无法弄清楚它是什么。感谢任何可以提供帮助的人:D

1 个答案:

答案 0 :(得分:3)

//if (isDebugPressed){
        JOptionPane.showMessageDialog(frame, "Output: " + text.getText().toString() , "Debugging", JOptionPane.PLAIN_MESSAGE);

需要将显示选项窗格的代码添加到ActionListener。

创建GUI时变量isDebugPressed为false,并且该语句永远不会再次执行。

此外,因为ActionListener只被添加到Debug按钮,所以您不需要设置action命令并检查ActionListener中的命令。源按钮将始终是“调试”按钮,因此您只需显示选项窗格。