EDITED 2013年2月2日我的Swing應用程序有什麼問題?
隨着一些你的答案的幫助和一個簡單的Swing應用指南,我發現,我能夠做的一點點進步,我把它們都放在一個類現在。然而,我仍然無法完成它,我不得不做一個按鈕來做到這一點,因爲它非常煩人,不得不拉起任務管理器。工具提示也不起作用。我不知道它是否重要,但我正在Eclipse中做。
import javax.swing.SwingUtilities;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JButton;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Thing extends JFrame
{
private static final long serialVersionUID = 1L;
public Thing()
{
setTitle("Thing");
setSize(1024, 768);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
JPanel panel = new JPanel();
getContentPane().add(panel);
panel.setLayout(null);
panel.setToolTipText("A panel container");
JButton quit = new JButton("Quit");
quit.setBounds(50, 60, 80, 30);
quit.setToolTipText("A button component");
quit.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
System.exit(0);
}
});
panel.add(quit);
}
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
Thing thing = new Thing();
thing.setVisible(true);
}
});
}
}
這是它給人的錯誤,當我嘗試與X.關閉(閉合工作正常的按鈕)
java.lang.NoClassDefFoundError: sun/awt/TimedWindowEvent
at sun.awt.windows.WToolkit.eventLoop(Native Method)
at sun.awt.windows.WToolkit.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
請注意:您應該在構造函數中加載圖像,然後將圖像保存到圖像中,而不是每次要繪製時加載圖像。 – MTilsted
'g.drawImage(Toolkit.getDefaultToolkit()。getImage(「image.jpg」),0,0,null);'不要試圖在paint方法中加載圖像!在構建時讀取它(或者更好,定義一個接受'Image'的構造函數)。只需用油漆塗抹即可。所以假設它是一個名爲'image'的類屬性,可能會變成..'g.drawImage(image,0,0,this);' –
1)'Title'應該返回一個首選大小(推測是)1200x1200。 2)一旦你完成了這些,'pack()'frame和'setLocationByPlatform(true)'3)除非這個圖像是用於其他組件的BG,否則考慮在一個標籤中顯示它。 4)忘了在最終代碼片段中強調對「this」的引用。一個'JPanel'實現'ImageObserver',所以使用該對象本身作爲圖像加載通知。隨着更多圖像可用,重繪將被觸發。 –