簡體   English   中英

如何在不同類別的jtextarea上打印文本消息

[英]How to print text messages on jtextarea from a different class

我創建了一個基於控制台的程序,該程序允許用戶進行數學測驗。 該程序基本上會生成隨機數,並確定答案是對還是錯。

現在,我正在嘗試創建該程序的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(); } } 

在您當前的代碼中:

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

什么也沒做,請使用JTextArea.setText(String t)方法設置值

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM