在java小程序中查看文本字段时出现问题
对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
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图标)的文件。