Java 创建JappletMadlibs游戏
我正在创建一个JappletMadlibs游戏,但我添加的图像填满了整个页面,因此我的标签和JTextFields被阻止。我只希望徽标位于小程序顶部的中心 我的代码:Java 创建JappletMadlibs游戏,java,image,swing,japplet,Java,Image,Swing,Japplet,我正在创建一个JappletMadlibs游戏,但我添加的图像填满了整个页面,因此我的标签和JTextFields被阻止。我只希望徽标位于小程序顶部的中心 我的代码: import java.awt.*; import javax.swing.*; import javax.swing.JApplet; import java.awt.event.*; import java.net.URL; public class MadLibs extends JApplet implements Ac
import java.awt.*;
import javax.swing.*;
import javax.swing.JApplet;
import java.awt.event.*;
import java.net.URL;
public class MadLibs extends JApplet implements ActionListener {
JLabel label1 = new JLabel("A Proper First Name: ");
JLabel label2 = new JLabel("A Pet: ");
JLabel label3 = new JLabel("A Personal Attribute: ");
JLabel label4 = new JLabel("An Adjective: ");
JLabel label5 = new JLabel("A Verb: ");
JTextField jtf1 = new JTextField();
JTextField jtf2 = new JTextField();
JTextField jtf3 = new JTextField();
JTextField jtf4 = new JTextField();
JTextField jtf5 = new JTextField();
JButton jb = new JButton("Create!");
JLabel madlib = new JLabel("");
Container con = getContentPane();
private Image image;
public void init() {
image = getImage(getDocumentBase(), "MadLibsLogo.gif");
jb.addActionListener(this);
con.add(label1);
con.add(jtf1);
con.add(label2);
con.add(jtf2);
con.add(label3);
con.add(jtf3);
con.add(label4);
con.add(jtf4);
con.add(label5);
con.add(jtf5);
con.add(jb);
con.add(madlib);
}
public void actionPerformed(ActionEvent e) {
madlib.setText(jtf1.getText() + " had a little " + jtf2.getText() + "/nIts " + jtf3.getText() + " was " + jtf4.getText() +
" as snow/nAnd everywhere that " + jtf1.getText() + jtf5.getText() + "/nThe " + jtf2.getText() + " was sure to go.");
repaint();
}
public void paint(Graphics g)
{
g.drawImage(image, 0, 0, 229, 73, this);
}
}
不要覆盖JApplet的paint方法,事实上,覆盖任何顶级窗口的paint方法通常是个坏主意,除非您确定需要这样做,不关心或需要Swing graphics提供的双缓冲,并且理解这可能会影响GUI的边框和子组件 为什么不简单地将图像放在ImageIcon中,将图像放在JLabel中,然后将JLabel放在希望显示图像的位置 编辑:您似乎在向contentPane添加许多组件,而不考虑布局。您是否已将其布局从未发布代码中的默认边界布局更改为其他布局 编辑2您声明:
不,我还没…我还没弄清楚布局。如何更改边框布局以使所有内容对齐
如果您没有更改布局,那么您看到的唯一可能就是添加到contentPane的最后一个组件madLib JLabel。您需要的是将JPanel层放在彼此之上,每个层都有自己的布局管理器。例如,继续使用BorderLayout保留contentPane,在BorderLayout.NORTH或PAGE_开始位置添加带有图像的徽标JLabel。然后将GUI主体的大部分添加到放置在BorderLayout.CENTER的JPanel中。阅读各种布局管理器,并与它们一起玩,因为这是学习如何使用它们的最佳方式。不,我还没有……我还没有掌握布局。如何更改边框布局以使所有内容对齐?