deiconized jframe无法正常工作

时间:2017-03-16 01:59:05

标签: java swing

我正在尝试使用JButton重新创建默认的最小化,恢复和关闭。到目前为止,我所有的代码都按预期工作。当我为最小化添加一个按钮和一个actionlistener时出现了问题:

我有一个按钮可以最小化我的画面,但是,当我取消它的时候,事情会变得奇怪。具体来说,最小化按钮仍然是永久性地(视觉上)按下,我的滚动窗格开始窃听,一个按钮将文本从一个字段移动到另一个字段停止工作,然而我的最小化和关闭Jbuttons仍然有效。

我在使用windowStateListener去屏蔽后尝试重新绘制和/或打包,但它什么也没做。我也尝试过setExtendedState(),它没有做任何不同的事情。

我的jframe上的边框布局中有3个JPanel。

以下是我的一些与此问题相关的代码:

public class DataUI extends JFrame
{
JTextArea ta;
JButton b, b1, b2, b3;
JLabel l;
JMenuBar mb;
JMenu m1, m2, m3;
JPanel p1, p2, p3, p4, p5;

public DataUI()
{
    setLayout(new BorderLayout());

    p1 = new JPanel();
    p1.setLayout(new GridLayout(3,1));
    ta = new JTextArea(5,30);
    p1.add(ta);
    b = new JButton("Click here to put text into label");
    p1.add(b);
    l = new JLabel("");
    p1.add(l);

    p2 = new JPanel();
    p2.setLayout(new GridLayout(1,3));
    mb = new JMenuBar();
    m1 = new JMenu("File");
    mb.add(m1);
    m2 = new JMenu("Edit");
    JMenuItem copy = new JMenuItem(new DefaultEditorKit.CopyAction());
    JMenuItem paste = new JMenuItem(new DefaultEditorKit.PasteAction());
    m2.add(copy);
    m2.add(paste);
    mb.add(m2);
    m3 = new JMenu("Help");
    mb.add(m3);
    p2.add(mb);

    p3 = new JPanel();
    p3.setLayout(new GridLayout(1,3));
    b1 = new JButton("1");
    p3.add(b1);
    b2 = new JButton("2");
    p3.add(b2);
    b3 = new JButton("3");
    p3.add(b3);

    p2.add(p3);

    add(p2,BorderLayout.NORTH);

    add(p1,BorderLayout.EAST);

    eventmin eh = new eventmin();
    b1.addActionListener(eh);

    event e = new event();
    b.addActionListener(e);

}

public class eventmin implements ActionListener
{
    public void actionPerformed(ActionEvent e)
    {
        setState(JFrame.ICONIFIED);
    }
}

public class event implements ActionListener
{
    public void actionPerformed(ActionEvent e)
    {
        String text = ta.getText();
        l.setText(text);
    }
}

public static void main(String[] args)
{
    DataUI gui = new DataUI();
    gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    gui.pack();

    gui.setVisible(true);
}

}

这是我第一次提问。

0 个答案:

没有答案