java - 在 java applet 中设置 TextField 的位置

标签 java applet textfield layout-manager null-layout-manager

我正在尝试向学校项目添加额外的功能。 当我将 TextField 添加到代码中时,它会显示在顶部中间。我希望能够更改 TextField

的位置

我的代码如下所示:

import java.applet.*;
import java.awt.*;
import java.io.*;

public class Prac4 extends Applet {
char ch;
char letter = 'X';
char other = '#';
char c1;
char c2;
char c3;
char c4;
char c5;
char c6;

String s1;
String s2;
String s3;
String s4;
String s5 = "How are you?";
String s6 = "What are we testing here?";
String s7 = "  How many spaces are in this text?   ";
String s8;
String s9;
String s10;
String s11;

TextField text1;

int num = 6;
int x;

boolean answer;

public void init() {
    ch = '%';

    s1 = new String();
    s2 = new String("Hello");
    s3 = new String(s2);
    s4 = "  Hello   ";

    text1 = new TextField(20);
    text1.setText("JOHN DOE");
    add(text1);
    text1.setBounds(10,10,50,50);
}

public void paint (Graphics g) {
    g.drawString(s2 + " What a nice day.", 25, 25);
    g.drawString("s2 equals " +s2, 25, 50);

    g.drawString("Length of s2 is " + s2.length() + " characters", 25, 75);

    g.drawString("s2 to UpperCase is " + s2.toUpperCase(), 25, 100);
    g.drawString("s2 to LowerCase is " + s2.toLowerCase(), 25, 125);

    s1 = s4.trim();
    g.drawString("The origional s4 is:" + s4, 25, 150);
    g.drawString("After trimmming s4 is:" + s1, 25, 175); 

    s1 = s2.replace('H', 'h');
    g.drawString("s2 after a replace is " + s1, 25, 200);
    ch = s4.charAt(num);

    s1 = s2.substring(1, 4);
    g.drawString("s1 = s2.substring(1,4) returns " + s1, 25, 225);

    s1 = s2.substring(2,2);
    g.drawString("s1 = s2.substring(2,2) returns " + s1, 25, 250);

    g.drawString("With the string s6 = \"" + s6 + "\"", 25, 275);

    answer = s6.startsWith("Whi");
    g.drawString("answer = s6.startsWith(\"Whi\") reurns " + answer, 25, 300);

    answer = s6.endsWith("?");
    g.drawString("answer = s6.endsWith(\"?\") returns " + answer, 25, 325);

    x = "Wooloomooloo".indexOf("loo", 8);
    g.drawString("x = \"Woolloomooloo\".indexOf(\"loo\", 8) returns " + x + " but", 25, 350);

    x = "Wooloomooloo".indexOf("loo", 12);
    g.drawString("x = \"Woolloomooloo\".indexOf(\"loo\", 12) returns " + x, 25, 375);
    g.drawString("which says the substring \"loo\" was not found after  position 12", 25, 400);

    /*
     * Turn s7 into upper case
     *      display the result
     * 
     * Trim s7
     *      display the result
     */

    g.drawString("s7 in uppercase = \"" + s7.toUpperCase() + "\"", 550, 25);
    g.drawString("s7 without leading or trailing spaces = \"" + s7.trim() + "\"", 550, 50);

    /*
     * Define s8 as "alk on the wild sid"
     * Define c1 as "W"
     * Define c2 as "E"
     * Display c1 then s8 then c2
     */

    s8 = "alk on the wild sid";
    c1 = 'W';
    c2 = 'E';
    g.drawString(c1 + s8 + c2, 550, 100);

    /*
     * Define s9 as TRAVIS WESLEY
     * change s9 to lower case
     * Split string at " " using s9.split(" "); into s10 and s11
     * Define c3 as s10.charAt(0);
     * Define c4 as s11.charAt(0);
     * Define c5 as c3 upper case
     * Define c6 as c4 uppercase
     * Display s11 with replaced letter the s10 with replaced letter
     * 
     * Error occurs when the fist letter is repeated in the word 
     */

    s9 = text1.getText();
    s9 = s9.toLowerCase();
    String[] parts = s9.split(" ");
    s10 = parts[0];
    s11 = parts[1];

    c3 = s10.charAt(0);
    String s12 = String.valueOf(c3);
    c4 = s11.charAt(0);
    String s13 = String.valueOf(c4);
    c5 = Character.toUpperCase(c3);
    String s14 = String.valueOf(c5);
    c6 = Character.toUpperCase(c4);
    String s15 = String.valueOf(c6);
    g.drawString(s11.replaceFirst(s13, s15) + ", " + s10.replaceFirst(s12, s14), 550, 150);
}

public boolean action(Event e, Object o) {
    repaint();
    return true;
}
}

text1.setLocation(x, y); 不起作用

最佳答案

setBounds 的外观来看,您似乎希望它位于顶部居中。

  1. 使用定义字符列数的构造函数创建文本字段

    new JTextField(20);
    
  2. 将小程序的布局设置为 FlowLayout

    setLayout(new FlowLayout());
    
  3. 只需添加文本字段

    add(text);
    
  4. 使用空布局设置位置和大小不是正确的方法。通过查看 Laying out Components Withing a Container 了解如何使用不同的布局管理器

关于java - 在 java applet 中设置 TextField 的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22628605/

相关文章:

java - 小程序无法在 Firefox 上加载

java - 需要将字节数组转换为图像而不使用 imageIO 或 fileoutputstream

flutter - 如何根据在 flutter 中选择的下拉项添加文本字段值

cocoa - 选择按下选项卡时文本字段循环的顺序

java - 如果应用了 java 插件,Gradle 无法在复合构建中找到 zip Artifact

java - 如何在 Java 中获得等效的 C++ 常量指针?

java - 在声音阵列中随机播放单词对

Java - 将鼠标事件发送到Applet

android - Flutter - 如何更改文本字段弹出菜单的样式?

java - 使用 java.nio 在文件更改时引发创建/移动/删除事件