【问题标题】:JTextArea connot be converted to int, Jscroll in Jpanel issueJTextArea 不能转换为 int,Jpanel 中的 Jscroll 问题
【发布时间】:2017-09-28 19:50:24
【问题描述】:

我找到了一些类似的答案,但没有一个可以帮助我解决这个问题。出于某种原因,在我的 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;
   }

}

【问题讨论】:

    标签: java swing jframe jpanel jscrollpane


    【解决方案1】:

    这对我有用:

    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;
     }
    

    【讨论】:

      【解决方案2】:

      我尝试了您的代码,但我在这行代码中遇到了错误:

      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;
         }
      

      【讨论】:

      • 非常感谢。我不确定为什么它需要 hoizontalScroll 的值,但这似乎确实有效。 ty
      • @BallaBaby 因为the constructor documentation 清楚地表明没有将组件和单个 int 作为参数的构造函数。
      • @VGR 你会看吗
      猜你喜欢
      • 1970-01-01
      • 2016-05-28
      • 1970-01-01
      • 2023-03-09
      • 2014-06-04
      • 2018-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多