Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 除锥齿轮架工作不正常_Java_Swing - Fatal编程技术网

Java 除锥齿轮架工作不正常

Java 除锥齿轮架工作不正常,java,swing,Java,Swing,我正在尝试用JButtons重新创建默认的最小化、恢复和关闭。到目前为止,我的所有代码都按预期工作。当我为我的最小化添加了一个按钮和一个actionlistener时,问题出现了: 我有一个按钮,可以最小化我的画面,但是,当我把它去锥化时,事情会变得很奇怪。具体来说,最小化按钮仍然被永久按下(视觉上),我的滚动窗格开始出现故障,一个将文本从一个字段移动到另一个字段的按钮停止工作,而最小化和关闭Jbuttons仍然工作 我尝试过在用WindowsListener进行除冰后重新喷漆和/或包装,但没有

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

我有一个按钮,可以最小化我的画面,但是,当我把它去锥化时,事情会变得很奇怪。具体来说,最小化按钮仍然被永久按下(视觉上),我的滚动窗格开始出现故障,一个将文本从一个字段移动到另一个字段的按钮停止工作,而最小化和关闭Jbuttons仍然工作

我尝试过在用WindowsListener进行除冰后重新喷漆和/或包装,但没有效果。我还尝试了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);
}

}

这是我第一次问问题。

张贴一篇演示问题的文章。我们无法访问您的图像,因此对于
MCVE
,您只需使用按钮上的文本即可。创建~MCVE`时,您可能会发现自己的问题。I您可以尝试使用
setExtendedState
而不是
setState
,并通过检查
getExtendedState
检查状态是否已更新,以包括我的MCVE。减去导入语句。我运行了它,也遇到了同样的问题。
setExtendedState
workfineformeyou示例适用于(MacOS),您运行的是什么操作系统?