您好,欢迎大家,这是我的第一个问题,我希望这是一个好问题。我正在探索swing
API,遇到一个突然出现的问题。我基本上问自己,我是否可以构建一个可以使用while()
循环并像在控制台中那样显示多个JTextArea的程序,如下所示:
while(x<100){
System.out.println("This is the number: " + x)
x++;
}
我希望将其打印在JFrame中,在此处输入代码,但似乎无法弄清楚该怎么做。我正在尝试使用JTextArea,但我确实认为这不是正确的方法。我尝试过标签,但是那根本不起作用。这是源代码。
import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.Container;
public class MainFrame extends JFrame{
public static int x=0;
public static int y = 0;
MainFrame(String title){
super(title);
// Set Layout
setLayout(new BorderLayout());
while(x<100){
y++;
x++;
System.out.println(x);
Container pane= getContentPane();
JTextArea x = new TextArea("Wateva" + y);
JButton button= new JButton("Wateva man");
pane.add(button, BorderLayout.SOUTH);
pane.add(x);
}
}
}
在控制台中,x每次显示递增1,表示循环正确运行。作为初学者,我可以做出的唯一解释是,它创建了JTextArea,但随后意识到x已更新,因此它用新的覆盖了旧的JTextArea,并且对每个数字执行此操作,直到达到100我认为我使用的是错误类型的JComponent,但这就是为什么我在这里。因此,如果有人可以给我提示或解决方法,这将不胜感激。
欢迎使用阻塞事件调度线程。
EDT负责处理重涂请求等。您绝不应该执行任何阻止EDT的操作,而应该使用类似SwingWorker
查看Swing中的并发以了解更多详细信息
更新了示例
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.SwingWorker;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class TestTextArea03 {
public static void main(String[] args) {
new TestTextArea03();
}
public TestTextArea03() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
}
JFrame frame = new JFrame("Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(new TestPane());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
public class TestPane extends JPanel {
private JTextArea textArea;
private TestPane() {
setLayout(new BorderLayout());
textArea = new JTextArea(10, 10);
add(new JScrollPane(textArea));
new TextWorker().execute();
}
public class TextWorker extends SwingWorker<Void, String> {
@Override
protected void process(List<String> chunks) {
for (String text : chunks) {
textArea.append(text + "\n");
}
}
@Override
protected Void doInBackground() throws Exception {
Thread.sleep(1000);
for (int x = 0; x < 10; x++) {
publish(String.valueOf(x));
Thread.sleep(250);
}
return null;
}
}
}
}
或摇摆计时器
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.SwingWorker;
import javax.swing.Timer;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class TestTextArea03 {
public static void main(String[] args) {
new TestTextArea03();
}
public TestTextArea03() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
}
JFrame frame = new JFrame("Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(new TestPane());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
public class TestPane extends JPanel {
private JTextArea textArea;
private int x;
private TestPane() {
setLayout(new BorderLayout());
textArea = new JTextArea(10, 10);
add(new JScrollPane(textArea));
Timer timer = new Timer(250, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
x++;
textArea.append(String.valueOf(x) + "\n");
}
});
timer.setRepeats(true);
timer.setCoalesce(true);
timer.start();
}
}
}
我已经从Dockerfile中构建了一个名为Centos+ssh的基本映像。在Centos+ssh的Dockerfile中,我使用CMD来运行ssh服务。 然后我想构建一个映像,运行其他名为rabbitmq的服务,DockerFile: 若要启动rabbitmq容器,请运行: 但是ssh服务不工作,它感测RabbitMQ的Dockerfile CMD覆盖Centos的CMD。 CMD如何在dock
我有一个具有固定大小的,并且允许换行和单词。 有人想办法弄到它吗?
我在jupyter中,选择kernel scala 2.11,当我放置返回数据时运行平稳: 然后,当我执行时,它返回
我正在将代码从Processing移植到Netbeans Java。我在运行多个java类时遇到问题。我的代码分为14个类,其中我的主要类仅包括这组代码: 无论项目何时运行,都只会弹出一个灰色背景的小屏幕,然而,仅此而已。在我看来,它无法读取其他13个类的所有代码。有什么想法吗?
我之前已经实现过几次Spring批处理,但它设计为一天只运行一次。 现在,我有了一个新的要求,每当记录插入表中时,我都需要开始批处理。当插入新记录时,它将启动作业,批处理将生成PDF并将其保存在存储库中,并向用户发送邮件。 我不知道如何设计一天运行多次的spring批处理,或者在这种情况下使用spring批处理是否正确。有人能解释一下吗。谢谢