在Jpanel问题中,JTextArea无法转换为int,Jscroll

时间:2017-09-28 19:50:25

标签: java swing jframe jpanel jscrollpane

我发现了一些类似的答案,但没有一个能帮助我解决这个问题。出于某种原因,在我的createMiddlePanel方法中,我的JtextArea txaResults 给了我一个区域,说JTextArea不能转换为int。任何帮助都会有所帮助。我不确定这是否与它在一个面板中有关,但我想不出任何其他原因我会收到错误。

package Tell;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.*;

public class FortuneTellerFrame extends JFrame {

JPanel pnlTop, pnlMiddle, pnlBottom;
JButton btnSubmit, btnQuit;
JLabel  lblFortuneTeller, lblPassword;
JTextField txtFortuneTeller, txtPassword;
JTextArea txaResults;
JScrollPane jsp;
public FortuneTellerFrame() {
    add(this.createTopPanel(), BorderLayout.NORTH);
    add(this.createMiddlePanel(), BorderLayout.CENTER);
    add(this.createBottomPanel(), BorderLayout.SOUTH);

    // Always set the size of data and the default close operation. 
    // Visibility needs to be set to true to be seen as well
    this.setSize(400, 300);
    this.setVisible(true);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


   }
   private JPanel createTopPanel()
   {
       pnlTop = new JPanel();
       pnlTop.setLayout(new GridLayout(2,2));
       ImageIcon icon = new ImageIcon("ball.jpg");
       Image image1 = icon.getImage(); // transform it 
       Image newimg = image1.getScaledInstance(50, 50,  java.awt.Image.SCALE_SMOOTH); 
       icon = new ImageIcon(newimg); // transform back

       JLabel label = new JLabel("Fortune Teller",icon,JLabel.LEFT);
       label.setHorizontalTextPosition(JLabel.CENTER);
       label.setVerticalTextPosition(JLabel.BOTTOM);
       lblPassword = new JLabel("Password: ");
       txtFortuneTeller = new JTextField(10);
       txtPassword = new JTextField(10);

       pnlTop.add(label);
       pnlTop.add(txtFortuneTeller);
       pnlTop.add(lblPassword);
       pnlTop.add(txtPassword);

       return pnlTop;
    }

   private JPanel createMiddlePanel()
   {
       pnlMiddle = new JPanel();
       txaResults = new JTextArea(10, 30);
       jsp = new JScrollPane(txaResults, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
       pnlMiddle.add(jsp);

       return pnlMiddle;
   }
   private JPanel createBottomPanel()
   {
       pnlBottom = new JPanel();
       btnSubmit = new JButton("Read My Fortune!");
       btnQuit = new JButton("Quit");

      btnQuit.addActionListener(e ->{
          System.exit(0);
      });

      btnSubmit.addActionListener(e ->{
          String username = this.txtFortuneTeller.getText();
          String password = this.txtPassword.getText();

          this.txaResults.append("Attempting to login with username " 
                  + username + " and password " + password + "\n");
      });

       pnlBottom.add(btnSubmit);
       pnlBottom.add(btnQuit);

       return pnlBottom;
   }

}

2 个答案:

答案 0 :(得分:0)

这对我有用:

private JPanel createMiddlePanel()
{
   pnlMiddle = new JPanel();
   txaResults = new JTextArea(10, 30);
   jsp = new JScrollPane(txaResults);
   jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
   pnlMiddle.add(jsp);

   return pnlMiddle;
 }

答案 1 :(得分:0)

我尝试了你的代码,我在这行中出错:

jsp = new JScrollPane(txaResults, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);

JScrollPane期望组件和2整数,指向垂直滚动和水平,所以如果你添加另一个参数,它应该工作,

private JPanel createMiddlePanel()
   {
       pnlMiddle = new JPanel();
       txaResults = new JTextArea(10, 30);
       jsp = new JScrollPane(txaResults, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
       pnlMiddle.add(jsp);

       return pnlMiddle;
   }