gpt4 book ai didi

java - 如何将文本字段和图形放在同一个 jframe 中?

转载 作者:行者123 更新时间:2023-12-01 22:57:30 25 4
gpt4 key购买 nike

我试图在同一个 jframe 中添加文本字段和图形,但它无法正常工作。我希望将文本字段放在底部,而 jframe 的其余部分用于图形,而不是当我运行它时,文本字段表现得很奇怪并覆盖了整个区域。有谁知道我怎样才能让它按照我想要的方式工作?

package pack;


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

public class gui extends JPanel implements Runnable{

Thread t = new Thread(this);
protected JTextField textField;
private final static String newline = "\n";

public int x;
public int y;

public static void main(String args[])
{
new gui();
new input();
}

public void input()
{
textField = new JTextField(20);

GridBagConstraints c = new GridBagConstraints();
c.gridwidth = GridBagConstraints.REMAINDER;
c.gridwidth = 500;
c.gridheight = 100;
c.fill = GridBagConstraints.HORIZONTAL;
add(textField, c);

c.fill = GridBagConstraints.BOTH;
c.weightx = 1.0;
c.weighty = 1.0;
}
public void actionPerformed(ActionEvent evt) {
String text = textField.getText();
textField.selectAll();
}

public gui()
{
textField = new JTextField(20);

JFrame f = new JFrame("lol");
System.out.println("::");

f.setTitle("Basic window");
f.setSize(500, 500);
f.setLocationRelativeTo(null);

f.add(this);
f.setVisible(true);
f.setFocusable(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(textField);

run();
}

public void run()
{
while(true)
{
try
{
t.sleep(10);
}
catch(Exception e){}

System.out.println(":D");
x++;
y++;

repaint();
}
}

public void paint (Graphics g)
{
g.setColor(Color.red);
}
}

最佳答案

删除该类并从新类开始。代码结构错误,类名错误,自定义绘画错误,线程的使用错误,new input()没有做任何事情,你不应该使用Thread.sleep(),你不应该覆盖paint(),你不应该在框架可见后向框架添加组件。

首先阅读关于 Custom Painting 的 Swing 教程中的部分。在那里您将找到一个工作示例,它将向您展示如何在进行自定义绘画时更好地构建类(class)。使用此演示代码作为程序的起点,并对此工作代码进行更改(一次一个)。

然后您可以更改该代码并将 JTextField 添加到框架中。您还需要阅读有关使用布局管理器的 Swing 教程,以了解 BorderLayout 的工作原理。因此,从一些简单可行的东西开始,然后添加额外的组件。不要试图一次性完成所有事情。

关于java - 如何将文本字段和图形放在同一个 jframe 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23811138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com