Java按钮工作异常

Java按钮工作异常,java,swing,button,Java,Swing,Button,我正在使用Swing用Java构建GUI。创建按钮并添加它的代码如下所示: //Create a button JButton exitButton = new JButton("Exit"); exitButton.setSize(90, 40); exitButton.setLocation(800, 450); exitButton.setVisible(true); //Adding components window.getCo

我正在使用Swing用Java构建GUI。创建按钮并添加它的代码如下所示:

    //Create a button
    JButton exitButton = new JButton("Exit");
    exitButton.setSize(90, 40);
    exitButton.setLocation(800, 450);
    exitButton.setVisible(true);

    //Adding components
    window.getContentPane().add(exitButton);
当我运行应用程序时,按钮会出现在整个窗口中,有时按预期显示,有时不显示。这是某种java错误还是我的sdk的问题。如果你想知道它是什么样的窗户

//Create a window
JFrame window = new JFrame("First Window");
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
window.setVisible(true);
window.setSize(1000, 550);
window.setLocation(150, 150);
这一切都在静态的虚空中。顺便说一句,我如何通过System.exit0获得关闭窗口的按钮;我是一名初学者,这是我第一次自行编写GUI

您需要一个布局。看


另外,请查看我的教程

您必须检查布局,如果要为组件使用自定义位置,请将布局设置为null,并使用setBoundsx、y、weight、height方法


致以最诚挚的问候。

我收到了这个示例代码。这可能对简单的swing按钮很有帮助

package com.ack.gui.swing.simple;

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.*;

public class SimpleSwingButtons extends JFrame {
  public static void main( String[] argv ) {
    SimpleSwingButtons myExample = new SimpleSwingButtons( "Simple Swing Buttons" );
  }

  public SimpleSwingButtons( String title ) {
    super( title );
    setSize( 150, 150 );
    addWindowListener( new WindowAdapter() {
      public void windowClosing( WindowEvent we ) {
        dispose();
        System.exit( 0 );
      }
    } );
    init();
    setVisible( true );
  }

  private void init() {
    JPanel my_panel = new JPanel();
    my_panel.setLayout( new GridLayout( 3, 3 ) );
    for( int i = 1; i < 10; i++ ) {
      ImageIcon icon = new ImageIcon( i + ".gif" );
      JButton jb = new JButton( icon );
      jb.setToolTipText( i + ".gif" );
      my_panel.add( jb );
    }
    getContentPane().add( my_panel );
    my_panel.setBorder( BorderFactory.createEtchedBorder() );
  }
}

礼貌

您需要窗口的布局。如果您是GUI的初学者,最好使用可视化编辑器来制作。然后,检查代码,看看“水下”发生了什么。@Heuster已经使用了NetBeans的GUI构建器,但它不允许我编辑大部分代码并创建problems@Heuster如果您是GUI的初学者,最好使用可视化编辑器来创建GUI。哼,不。不了解Swing就使用GUI builder只会导致两件事:永远是GUI的初学者,用难以维护的代码创建丑陋的UI。正确的答案是遵循Swing教程。例如,LayoutManager的可视指南。JFrame内容窗格的默认LayoutManager是BorderLayout。查看如何在Swing中使用LayoutManager并将它们相互嵌套。此外,line window.setVisibletrue;应该是代码中的最后一行,否则需要调用revalidate;在JFramenull布局上重新绘制从来都不是正确的答案,只有Swing中最糟糕的建议。正确的答案是正确使用LayoutManager。我知道这样做不是最好的,但在一些地方或学校,当一些老师开始教授Java和swing时,他们会从空布局开始,让学生使用坐标来适应它,然后使用您提到的布局。我把自己放在第一个案例中。因为我认为他可以是一个在这种情况下寻求帮助的学生。@Marcelo Tataje的作品很酷。猜一下立根Sx,y,重量,高度是x,y,宽度,高度。嗯,是的,我是一名学生,在学校刚刚达到第九个标准。是的,对不起,是宽度。很高兴帮助你。如果这是你的正确答案,请检查它,以帮助其他学生找到它,并防止他们再次问同样的问题。谢谢@习惯和旧习惯很难改掉。当人们开始使用挫折等。。。他们习惯了它,并继续在任何地方复制它。我不在乎老师们是否从空布局开始,他们只是错了,这只表明他们对JavaSwing的了解很差。相反,使用setBounds并不比使用适当的LayoutManager简单。另一个我需要忽略的网站:不需要扩展JFrame,使用pack iso setSize,UI不在EDT上运行
package com.ack.gui.swing.simple;

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.*;

public class SimpleSwingButtons extends JFrame {
  public static void main( String[] argv ) {
    SimpleSwingButtons myExample = new SimpleSwingButtons( "Simple Swing Buttons" );
  }

  public SimpleSwingButtons( String title ) {
    super( title );
    setSize( 150, 150 );
    addWindowListener( new WindowAdapter() {
      public void windowClosing( WindowEvent we ) {
        dispose();
        System.exit( 0 );
      }
    } );
    init();
    setVisible( true );
  }

  private void init() {
    JPanel my_panel = new JPanel();
    my_panel.setLayout( new GridLayout( 3, 3 ) );
    for( int i = 1; i < 10; i++ ) {
      ImageIcon icon = new ImageIcon( i + ".gif" );
      JButton jb = new JButton( icon );
      jb.setToolTipText( i + ".gif" );
      my_panel.add( jb );
    }
    getContentPane().add( my_panel );
    my_panel.setBorder( BorderFactory.createEtchedBorder() );
  }
}