2011-08-30 116 views
2

我做了一个简单的测试小程序,它有一个红色背景和几个按钮。当我运行小程序(在http://nuevawave.org/sandbox/JavaGallery/GUIApplet.html)时,按钮显示,但红色不显示。当我点击小程序时,有时背景的一部分会闪烁红色。有谁知道可能是什么问题?Applet背景闪烁?

这里是applet代码:

package test; 

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
import javax.swing.JApplet.*; 

public class GUIApplet extends javax.swing.JApplet { 

/** Initializes the applet GUIApplet */ 
public void init() { 
    try { 
     java.awt.EventQueue.invokeAndWait(new Runnable() { 
      public void run() { 
       initComponents(); 
      } 
     }); 
    } catch (Exception ex) { 
     ex.printStackTrace(); 
    } 
} 

public void paint(Graphics g) { 
    super.paint(g); 
} 

/** This method is called from within the init() method to 
* initialize the form. 
* WARNING: Do NOT modify this code. The content of this method is 
* always regenerated by the Form Editor. 
*/ 
@SuppressWarnings("unchecked") 
// <editor-fold defaultstate="collapsed" desc="Generated Code"> 
private void initComponents() { 

    jTextField1 = new javax.swing.JTextField(); 
    jButton1 = new javax.swing.JButton(); 
    jButton2 = new javax.swing.JButton(); 

    setBackground(new java.awt.Color(255, 0, 0)); 
    setMaximumSize(new java.awt.Dimension(250, 300)); 
    setPreferredSize(new java.awt.Dimension(250, 300)); 
    setSize(new java.awt.Dimension(250, 300)); 
    getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout()); 

    jTextField1.setText("jTextField1"); 
    getContentPane().add(jTextField1, new org.netbeans.lib.awtextra.AbsoluteConstraints(70, 170, -1, -1)); 

    jButton1.setText("jButton1"); 
    getContentPane().add(jButton1, new org.netbeans.lib.awtextra.AbsoluteConstraints(17, 90, -1, -1)); 

    jButton2.setText("jButton2"); 
    getContentPane().add(jButton2, new org.netbeans.lib.awtextra.AbsoluteConstraints(120, 90, -1, -1)); 
}// </editor-fold> 


// Variables declaration - do not modify 
private javax.swing.JButton jButton1; 
private javax.swing.JButton jButton2; 
private javax.swing.JTextField jTextField1; 
// End of variables declaration 

} 
+1

覆盖的'paint()'方法不会做任何不会被完成的事情,如果它没有被覆盖。但即使忽视这一事实,也要拿出来。 –

回答

6

您需要设置JApplet的的的contentPane,而不是JApplet的本身的背景,因为它是实际持有的组件和正在显示的contentPane。请在您的init方法中调用getContentPane().setBackground(...);,而不是拨打setBackground(...)

+1

+1,4分钟打我(是我打字慢?)。只是想添加你不应该重写paint(...)方法。 – camickr

+0

因为我在NetBeans中,我无法手动编辑initComponents方法,所以我添加了一个面板并更改了其背景。现在,小程序是空白的,不会显示任何内容。我甚至将它改回原来的状态,但没有奏效。 – Nate711

+0

我忘了我已经从null将布局更改为绝对。我改回来了,现在按钮显示出来了。 – Nate711