0

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

問題がどこから来ているのか考えはありますか?私が見た他のすべての投稿では、アプレットのサイズを確認することをお勧めしますが、900x900ですべてを保持できるはずですよね?前もって感謝します...

また、私は最近、この同じプログラムについて質問を投稿したことを知っています。これは、高速で信頼性の高い情報を取得するための最良のフォーラムです...

4

3 に答える 3

1

のデフォルトのレイアウトはJAppletですBorderLayout。したがって、許可されたBorderLayout制約を使用してコンポーネントを追加してみてください。例えば

this.add(rowNum, BorderLayout.NORTH);

BorderLayout柔軟性がなく、サードパーティのレイアウトマネージャーに依存したくない場合はGridBagLayout、ネストされた多数のアプレットを確認するか、構成することをお勧めしますJPanel

別の提案:GUI初期化コードをからコンストラクターに移動することをお勧めしinit()ますJApplet。これにより、をJTextField最終的にすることができます。私は通常、init()を使用して、アプリケーションが使用するスレッドを開始します。

于 2009-10-21T10:19:50.923 に答える
1

アプレット コンポーネントと Swing コンポーネントを混在させることはできません。

たとえば、JTextField をアプレットのコンテンツ ペインに配置することはできません。JApplet ではなくアプレットに拡張する場合は、JTextField の代わりに TextField を使用します。

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

プレフィックスに注意してください。

ほとんどの Swing コンポーネントを使用しているため、Applet ではなく JApplet を拡張します。

public class danTeamProject extends JApplet implements ActionListener
{    ...
     JButton button = new JButton();
}
于 2009-10-21T09:57:52.617 に答える
0

どのレイアウターを使用していますか?ご覧のとおり、子を 1 つだけ許可するデフォルトのレイアウトを使用しています (つまり、さらに追加することはできますが、それらは無視されます)。

MiG Layoutをアプレットに追加してみると、他の子が表示されるはずです。

于 2009-10-21T09:44:56.273 に答える