【发布时间】:2009-12-20 06:36:57
【问题描述】:
我有一个使用 Netbeans 创建的 GUI 窗口。然后我将代码移植到我自己的程序中,以便我可以随意显示 .png。
但是,GUI 组件不显示,默认情况下打开的窗口没有大小。
我需要在最初打开窗口时显示 GUI 组件,并且窗口大小正确,以便所有内容都可见。
谁能帮帮我?
谢谢
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.JFrame;
public class AwtImage extends javax.swing.JFrame {
private Image img;
// Variables declaration - do not modify
private javax.swing.JCheckBox jCheckBox2;
private javax.swing.JLabel jLabel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JTextArea jTextArea1;
private javax.swing.JTextField jTextField1;
// End of variables declaration
public static void main(String[] args){
AwtImage ai = new AwtImage();
}
private void initComponents() {
jScrollPane1 = new javax.swing.JScrollPane();
jTextField1 = new javax.swing.JTextField();
jScrollPane2 = new javax.swing.JScrollPane();
jTextArea1 = new javax.swing.JTextArea();
jCheckBox2 = new javax.swing.JCheckBox();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Not Logged In");
getContentPane().setLayout(null);
jTextField1.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyTyped(java.awt.event.KeyEvent evt) {
jTextField1KeyTyped(evt);
}
});
jScrollPane1.setViewportView(jTextField1);
getContentPane().add(jScrollPane1);
jScrollPane1.setBounds(0, 540, 170, 22);
jTextArea1.setColumns(20);
jTextArea1.setRows(5);
jScrollPane2.setViewportView(jTextArea1);
getContentPane().add(jScrollPane2);
jScrollPane2.setBounds(0, 440, 166, 96);
jCheckBox2.setText("Sit Out Next Hand");
jCheckBox2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jCheckBox2ActionPerformed(evt);
}
});
getContentPane().add(jCheckBox2);
jCheckBox2.setBounds(0, 410, 113, 23);
pack();
}// </editor-fold>
private void jCheckBox2ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void jTextField1KeyTyped(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
}
public AwtImage() {
super("Image Frame");
MediaTracker mt = new MediaTracker(this);
img = Toolkit.getDefaultToolkit().getImage("C:\\Documents and Settings\\Robert\\Desktop\\ClientServer\\Poker Table Art\\TableAndChairs.png");
mt.addImage(img,0);
setSize(600,600);
initComponents();
setVisible(true);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we) {
dispose();
}
});
}
public void update(Graphics g){
paint(g);
}
public void paint(Graphics g) {
if(img != null)
g.drawImage(img, 0, 10, this);
// else
// g.clearRect(0, 0, getSize().width, getSize().height);
}
}
alt text http://img41.imageshack.us/img41/9795/openn.png alt text http://img709.imageshack.us/img709/5716/uponresize.png
【问题讨论】:
-
代码?以及为什么要“移植”代码 - 让它留在已生成的类中,然后更新该类。
-
我不喜欢,把图片放进去很痛苦
-
对不起,代码已经包含了
-
为什么你认为它很痛苦?除了不能修改 "initComponents" 有什么区别?
-
我没有使用 Java 图形编程的经验,所以我根本不知道常见的做法是什么。我想我可以使用netbeans,但我不知道将代码放在哪里来显示图像,现在我不知道如何随意显示图像。我只是对那里的信息量有点不知所措,我只需要简单实用的解释来说明如何在 gui 组件旁边包含图像。
标签: java user-interface graphics jframe