简单javagui程序
我的JPanel和JTextField由于某种原因没有出现。程序唯一的任务是每次单击按钮时向计数器添加一个数字。没有编译错误或控制台问题。根本就没有出现简单javagui程序,java,swing,Java,Swing,我的JPanel和JTextField由于某种原因没有出现。程序唯一的任务是每次单击按钮时向计数器添加一个数字。没有编译错误或控制台问题。根本就没有出现 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Swing { public static void main(String[] args) { SwingUtilities.invokeLater(new Runnab
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Swing
{
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
final JFrame mainFrame = new JFrame ("Counter (Program 1/2)");
mainFrame.setVisible(true);
mainFrame.setSize(400, 200);
mainFrame.setLayout(new BorderLayout());
mainFrame.setLocationRelativeTo(null);
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton countButton = new JButton("Count up");
mainFrame.add(countButton, BorderLayout.SOUTH);
countButton.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
JTextField clicks = new JTextField(BorderLayout.CENTER);
JPanel firstPanel = new JPanel();
mainFrame.add(firstPanel);
mainFrame.add(clicks, BorderLayout.NORTH);
int counter = 1;
counter++;
String textField = String.valueOf(counter);
clicks.setText(textField);
}
});
}
});
}
}不要在ActionListener中添加JTextField和JPanel。这毫无意义,因为每次按下按钮时都会重新添加新组件。而是在GUI上调用
setVisible(true)
之前,在GUI创建时添加它们。然后在ActionListener中更新文本字段的文本
附带建议:通过给类指定字段、构造函数,并从静态main方法中获取大部分代码,尝试使类更面向对象。不要在ActionListener中添加JTextField和JPanel。这毫无意义,因为每次按下按钮时都会重新添加新组件。而是在GUI上调用
setVisible(true)
之前,在GUI创建时添加它们。然后在ActionListener中更新文本字段的文本
作为附带建议:通过给类指定字段、构造函数,并从静态main方法中获取大部分代码,尝试使类更面向对象。您的错误:
单击
和firstpanel
添加到run
方法中的框架中,而不是在actionPerformed
add
方法,而不是文本字段构造函数import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Swing {
public static int counter = 1;
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
final JFrame mainFrame = new JFrame("Counter (Program 1/2)");
mainFrame.setSize(400, 200);
mainFrame.setLayout(new BorderLayout());
mainFrame.setLocationRelativeTo(null);
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton countButton = new JButton("Count up");
mainFrame.add(countButton, BorderLayout.SOUTH);
final JTextField clicks = new JTextField(String.valueOf(counter));
JPanel firstPanel = new JPanel();
mainFrame.add(firstPanel, BorderLayout.CENTER);
mainFrame.add(clicks, BorderLayout.NORTH);
countButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
counter++;
String textField = String.valueOf(counter);
clicks.setText(textField);
}
});
mainFrame.setVisible(true);
}
});
}
}
你的错误:
单击
和firstpanel
添加到run
方法中的框架中,而不是在actionPerformed
add
方法,而不是文本字段构造函数import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Swing {
public static int counter = 1;
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
final JFrame mainFrame = new JFrame("Counter (Program 1/2)");
mainFrame.setSize(400, 200);
mainFrame.setLayout(new BorderLayout());
mainFrame.setLocationRelativeTo(null);
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton countButton = new JButton("Count up");
mainFrame.add(countButton, BorderLayout.SOUTH);
final JTextField clicks = new JTextField(String.valueOf(counter));
JPanel firstPanel = new JPanel();
mainFrame.add(firstPanel, BorderLayout.CENTER);
mainFrame.add(clicks, BorderLayout.NORTH);
countButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
counter++;
String textField = String.valueOf(counter);
clicks.setText(textField);
}
});
mainFrame.setVisible(true);
}
});
}
}
非常感谢你!有没有办法将计数器对准JTextField的中心?
单击.setHorizontalAlignment(JTextField.center)代码>这就可以了。非常感谢!有没有办法将计数器对准JTextField的中心?单击.setHorizontalAlignment(JTextField.center)代码>这将完成任务。