2009-10-21 41 views
0

Java非常新,只是隨它一起玩耍。我正在嘗試將文本字段添加到表格下方,出於某種原因我無法看到它們。代碼如下:在java applet中查看textfields的問題

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>` 

任何問題的來源?我看過的所有其他帖子都建議檢查小程序的大小,但900x900應該容納所有內容,對不對?在此先感謝...

此外,我知道我最近發佈了一個關於這個相同的程序的問題。這只是獲得快速,可靠信息的最佳論壇...

+0

這取決於表類中的代碼在做什麼 – 2009-10-21 09:38:34

+0

它應該只是創建一個四元素表... – danwoods 2009-10-21 09:39:27

回答

1

不能混合Applet與Swing組件:

例如,你不能把一個JTextField上一個Applet的contentPane。 如果您擴展到Applet,則不使用JApplet,而使用TextField而不使用JTextField。

Button, Label, TextField, Panel are for Applet 
JButton, JLabel, JTextField, JPanel are for JApplet 

請注意前綴。

由於您使用的大多數Swing組件,擴展JApplet的Applet的不

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

謝謝。切換到JApplet的一切,但沒有運氣... – danwoods 2009-10-21 10:10:10

+0

但你還有一件事,編譯你的小程序後,確保你已經清空瀏覽器的臨時互聯網文件,以及Java(控制面板 - > Java圖標)。 – jerjer 2009-10-22 06:55:59

0

您使用哪種佈局?正如我所看到的那樣,您使用的默認佈局只允許一個孩子(即您可以添加更多,但它們將被忽略)。

嘗試將MiG Layout添加到小程序,然後其他孩子應該出現。

+0

我認爲這是一個適合窗口中所有組件的流佈局。我真的很喜歡非第三方解決方案,但我一定會看看米格。謝謝 – danwoods 2009-10-21 09:50:22

+0

將其更改爲BorderLayout,仍然無法看到文本字段... – danwoods 2009-10-21 09:57:00

1

JApplet的默認佈局BorderLayout。因此,請嘗試使用允許的BorderLayout約束添加組件;例如

this.add(rowNum, BorderLayout.NORTH); 

如果BorderLayout是你太過死板,你不想依靠第三方的佈局管理器,我建議要麼看着GridBagLayout或者從一些嵌套JPanel S的撰寫你的小程序。

另一個建議:您可能想要將GUI初始化代碼從init()移動到JApplet的構造函數。這可以讓你最終確定你的JTextField;我通常使用init()來啓動應用程序使用的任何線程。

+0

將代碼更改爲:this.add(rowNum,BorderLayout.EAST);和this.add(colNum,BorderLayout.WEST);仍然沒有運氣。感謝您的輸入,儘管 – danwoods 2009-10-21 10:26:32

+0

嘗試在init()方法的末尾添加對revalidate()的調用。 – Adamski 2009-10-21 11:46:47