在java小程序中查看文本字段时出现问题

在java小程序中查看文本字段时出现问题,java,applet,textfield,Java,Applet,Textfield,对Java来说是非常新的,只是随便玩玩而已。我试图将文本字段添加到表格下方,但由于某些原因,我无法看到它们。代码如下: import java.applet.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class danTeamProject extends JApplet implements ActionListener { danTable aTable; //private J

对Java来说是非常新的,只是随便玩玩而已。我试图将文本字段添加到表格下方,但由于某些原因,我无法看到它们。代码如下:

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

public class danTeamProject extends JApplet implements ActionListener
{

danTable aTable;
//private JLabel rowLabel, colLabel;

private JTextField rowNum;
private JTextField colNum;


public void init()  {



    JButton btnStart = new JButton("Start");
    this.add(btnStart);
    aTable = new danTable();
    this.add( aTable );

    //rowLabel = new JLabel( "Enter number of rows:" );
    rowNum = new JTextField( 1 );

    //colLabel = new JLabel( "Enter number of columns:" );
    colNum = new JTextField( 1 );

    //this.add (rowLabel);
    this.add (rowNum);

    //this.add (colLabel);
    this.add (colNum);

    rowNum.addActionListener(this);
    colNum.addActionListener(this);


}

public void actionPerformed(ActionEvent event) {
    String s = rowNum.getText();
    String sUp = s.toUpperCase();
    rowNum.setText(sUp);
}

}





import javax.swing.*;

class danTable extends JPanel {
public danTable() {
    Object[][] cellData = {
        {"row1-col1", "row1-col2"},
        {"row2-col1", "row2-col2"}};
    String[] columnNames = {"col1", "col2"};
    add(  new JTable(cellData, columnNames) ) ;
   }
}




`<!DOCTYPE HTML>
<HTML>
<HEAD>
</HEAD>
<BODY>
  <div>
    <APPLET
      CODE="danTeamProject"
      CODEBASE="."
      width=900 height=900>
      <PARAM name="boxbgcolor" value="cyan">
    </APPLET>
  </div>
</BODY>
</HTML>`
import java.applet.*;
导入java.awt.*;
导入java.awt.event.*;
导入javax.swing.*;
公共类Danteam项目扩展JApplet实现ActionListener
{
danTable和aTable;
//私人JLabel rowLabel,colLabel;
私有JTextField rowNum;
私有JTextField colNum;
公共void init(){
JButton btnStart=新JButton(“开始”);
添加(btnStart);
aTable=新的danTable();
添加(aTable);
//rowLabel=new JLabel(“输入行数:”);
rowNum=新的JTextField(1);
//colLabel=newjlabel(“输入列数:”);
colNum=新的JTextField(1);
//this.add(rowLabel);
this.add(rowNum);
//这个.add(colLabel);
this.add(colNum);
rowNum.addActionListener(这个);
colNum.addActionListener(this);
}
已执行的公共无效操作(操作事件){
字符串s=rowNum.getText();
字符串sUp=s.toUpperCase();
rowNum.setText(sUp);
}
}
导入javax.swing.*;
类danTable扩展了JPanel{
公共数据表(){
对象[][]单元格数据={
{“row1-col1”、“row1-col2”},
{“row2-col1”,“row2-col2”};
字符串[]columnNames={“col1”,“col2”};
添加(新的JTable(cellData,columnNames));
}
}
`
`
你知道问题出在哪里吗?我看过的所有其他帖子都建议检查小程序的大小,但900x900应该可以容纳所有内容,对吗?先谢谢你


另外,我知道我最近发布了一个关于这个程序的问题。这是获取快速、可靠信息的最佳论坛…

您使用的是哪种layouter?在我看来,您使用的是默认布局,它只允许一个子级(即,您可以添加更多,但它们将被忽略)


尝试添加到小程序中,然后其他子项将显示。

不能将小程序和Swing组件混合使用:

例如,不能在小程序内容窗格上放置JTextField。 如果要扩展到Applet而不是JApplet,请使用TextField而不是JTextField

Button, Label, TextField, Panel  are for Applet
JButton, JLabel, JTextField, JPanel are for JApplet
请注意前缀

因为您使用的是大多数Swing组件,所以请扩展JApplet而不是小程序

public class danTeamProject extends JApplet implements ActionListener
{    ...
     JButton button = new JButton();
}

JApplet
的默认布局是
BorderLayout
。因此,尝试使用允许的
BorderLayout
约束添加组件;e、 g

this.add(rowNum, BorderLayout.NORTH);
如果
BorderLayout
对您来说太死板,并且您不想依赖第三方布局管理器,我建议您要么查看
gridbagloayout
,要么从许多嵌套的
JPanel
组合小程序


另一个建议:您可能希望将GUI初始化代码从
init()
移动到
JApplet
构造函数。这允许您将
JTextField
s设置为final;我通常使用init()来启动应用程序使用的任何线程。

这取决于table类中的代码在做什么,它应该只是创建一个四元素表……我假设它是一个流布局,适合窗口中的所有组件。我真的很想要一个非第三方的解决方案,但我一定要看看米格。感谢将代码更改为:this.add(rowNum,BorderLayout.EAST);和this.add(colNum,BorderLayout.WEST);还是没有运气。感谢您的输入,请尝试在init()方法的末尾添加对revalidate()的调用。不过,还有一件事,在编译小程序后,请确保清空了浏览器的临时internet文件以及java(控制面板->java图标)的文件。