有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在jtextarea上打印来自不同类的文本消息

我创建了一个基于控制台的程序,允许用户进行数学测验。该程序基本上生成随机数,并确定答案是对还是错

现在,我正在尝试创建这个程序的GUI版本,我被卡住了

我想在jtextarea中打印来自不同类的文本消息。我使用了get和set方法,但由于某些原因,它不会输出文本消息。我对摇摆工人做了一些研究,但我不知道如何让它工作,所以如果可能的话,我会尽量避免使用它

这不是家庭作业。我4个月前开始学习java,所以我可能不理解高级概念

我想我想知道的是。。。我必须使用摇摆工人吗?真正想要做的就是生成随机数并将结果输出到jtextarea。。。它不应该冻结gui,对吗?无论如何,先谢谢你

package algorithmsProgramGUI.view; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import java.awt.Toolkit; import java.awt.Panel; import javax.swing.JLabel; import java.awt.Font; import javax.swing.text.JTextComponent; import javax.swing.JFormattedTextField; import java.awt.Choice; import java.awt.Label; import javax.swing.JPopupMenu; import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.TextArea; import java.awt.Button; import org.eclipse.wb.swing.FocusTraversalOnArray; import javax.swing.JTextArea; public class ProFrame extends JFrame { /** * */ private static final long serialVersionUID = -7222968352076888482L; private static JTextArea textArea; private JPanel contentPane; public static JTextArea getTextArea() { return textArea; } public static void setTextArea(JTextArea string) { ProFrame.textArea = string; } /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { ProFrame frame = new ProFrame(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public ProFrame() { setIconImage(Toolkit.getDefaultToolkit().getImage(ProFrame.class.getResource("/algorithmsProgramGUI/resources/AlgorithmsLogo.png"))); setTitle("Algorithms"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 864, 590); contentPane = new JPanel(); contentPane.setToolTipText("Choose a test to take"); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); JLabel lblSelectTest = new JLabel("Select Test :"); lblSelectTest.setFont(new Font("Times New Roman", Font.BOLD, 15)); lblSelectTest.setBounds(35, 42, 95, 14); contentPane.add(lblSelectTest); JFormattedTextField formattedTextField = new JFormattedTextField(); formattedTextField.setToolTipText("Input answer here"); formattedTextField.setBounds(419, 415, 108, 24); contentPane.add(formattedTextField); Label label = new Label("Answer :"); label.setFont(new Font("Times New Roman", Font.BOLD, 15)); label.setBounds(339, 415, 74, 22); contentPane.add(label); Panel status_panel = new Panel(); status_panel.setFont(new Font("Times New Roman", Font.PLAIN, 12)); status_panel.setBounds(220, 445, 558, 75); contentPane.add(status_panel); Button button_1 = new Button("Next Question"); button_1.setFont(new Font("Times New Roman", Font.BOLD, 15)); button_1.setBounds(545, 415, 154, 22); contentPane.add(button_1); JTextArea textArea = new JTextArea(); textArea.setEditable(false); textArea.setBounds(257, 62, 521, 305); contentPane.add(textArea); Choice Test = new Choice(); Test.setFont(new Font("Times New Roman", Font.BOLD, 12)); Test.setBounds(35, 62, 130, 20); Test.add("Practice Quiz"); Test.add("Test 1"); Test.add("Test 2"); contentPane.add(Test); Button button = new Button("Generate Test"); button.setFont(new Font("Times New Roman", Font.BOLD, 15)); button.setBounds(35, 235, 117, 26); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = Test.getSelectedItem().toString(); textArea.setText(s); textArea.setFont(new Font("Times New Roman", Font.BOLD, 12)); if (Test.getSelectedItem().equalsIgnoreCase("Practice Quiz")) { algorithmsProgramGUI.view.PracticeQuizGUI.runPracticeQuizGUI(); } if (Test.getSelectedItem().equalsIgnoreCase("Test 1")) { textArea.setText("Test 1 is not available at this time."); } if (Test.getSelectedItem().equalsIgnoreCase("Test 2")) { textArea.setText("Test 2 is not available at this time."); } } }); contentPane.add(button); contentPane.setFocusTraversalPolicy(new FocusTraversalOnArray(new Component[]{label, formattedTextField, Test, button, status_panel, lblSelectTest, button_1})); } @SuppressWarnings("unused") private static void addPopup(Component component, final JPopupMenu popup) { component.addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { if (e.isPopupTrigger()) { showMenu(e); } } public void mouseReleased(MouseEvent e) { if (e.isPopupTrigger()) { showMenu(e); } } private void showMenu(MouseEvent e) { popup.show(e.getComponent(), e.getX(), e.getY()); } }); } public static void setTextArea(String string) { // TODO Auto-generated method stub } }

package algorithmsProgramGUI.view; import javax.swing.JTextArea; import javax.swing.text.JTextComponent; import java.awt.*; public class PracticeQuizGUI { static void runPracticeQuizGUI() { // System.out.println("This statement was created in PracticeQuizGUI class."); //algorithmsProgramGUI.view.ProFrame.ProFrame().textArea.setText("s"); //algorithmsProgramGUI.view.ProFrame.getTextArea(); algorithmsProgramGUI.view.ProFrame.setTextArea("Welcome to the practice quiz."); //algorithmsProgramGUI.view.ProFrame.getTextArea(); } }

共 (1) 个答案

  1. # 1 楼答案

    在当前代码中:

    public static void setTextArea(String string) {
        // TODO Auto-generated method stub
    }
    

    什么也没做,用吧 JTextArea。setText(String t)方法来设置值