小程序:窗口打开时尺寸较小

时间:2014-03-24 20:24:50

标签: java image applet awt paint

我有一个Applet程序,可以直接从Eclipse运行进行测试。我正在设置此Applet的窗口大小。但是,我看到有时applet打开的窗口较小,而不是设置实际的窗口大小,有时它会打开正确的设置大小setSize(550, 650);

我无法解决为什么有时会打开较小的窗口。有人可以建议我解决这个问题吗?

    public class HomeApplet extends Applet implements ActionListener
{   

public void init() {


        titleStr = "Welcome to Application Home page!";

        connectBtn = new Button("Submit");

        connectBtn.addActionListener(this);
        add(connectBtn);  
        connectBtn.setBounds(100, 120, 90, 20);
        connectBtn.setEnabled(true);
        setLayout( null );

        setSize(550, 650);

        sharedImage = new ImageIcon("sameer15.jpg" ).getImage(); 

}
public void paint (final Graphics g)
    {
        //super.paint(g);
        int x = getSize().width;
        int c1 = x/2;

        Font titleFont = new Font("Arial", Font.BOLD, 20);
        g.setFont(titleFont);
        g.drawString(titleStr, c1-170, 20);

        Font connectFont = new Font("Arial", Font.BOLD, 15);
        g.setFont(connectFont);
        g.drawString(connectStr, c1-190, 80);

        g.drawImage(sharedImage, 100, 100, this);
        System.out.println("drawImage"); 
    }

}

1 个答案:

答案 0 :(得分:2)

  

有人可以建议我解决这个问题吗?

可以在AppletViewer中测试该applet,方法是在源代码顶部的代码块中包含applet元素。

即。改变:

public class HomeApplet extends Applet implements ActionListener

类似于:

/* <applet code=HomeApplet width=550 height=650></applet> */
public class HomeApplet extends Applet implements ActionListener

然后编译并运行:

prompt> javac HomeApplet.java
prompt> appletviewer HomeApplet.java

注意

setSize(550, 650);

对于applet来说,这是完全错误的。 applet的大小应该用HTML或其他方式设置。小程序(实际上是网页中的来宾),无权自行调整大小(就像访客访问,敲墙为了“多一点空间”。)

问题

这些不是修辞问题。另一种方法是:我希望看到这些问题的答案

  1. 为什么编写applet代码?如果是由于规格。请老师将其转介给Why CS teachers should stop teaching Java applets
  2. 为什么选择AWT而不是Swing?有关放弃使用AWT组件的许多理由,请参阅Swing extras over AWT上的答案。
  3. 未来的问题

    sharedImage = new ImageIcon("sameer15.jpg" ).getImage(); 
    

    当您从命令行在Applet Viewer中进行测试或嵌入在网页中时,您会发现在Java控制台中看到AccessControlException时,您会发现这有多么错误。 ..但我们可以在单独的Q&amp; A中处理这个问题。 ;)