JTextArea connot被转换为int,jscroll在jpanel问题
问题描述:
我发现了一些类似的答案,但没有帮助我解决这个问题。出于某种原因,在我的createMiddlePanel方法中,我的JtextArea txaResults给了我一个区域说,JTextArea不能转换为int。任何援助都会有所帮助。我不确定这是否与它在一个面板中有关,但我想不出任何其他原因为什么我会得到一个错误。JTextArea connot被转换为int,jscroll在jpanel问题
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;
}
}
答
这为我工作:
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;
}
答
我想你的代码,我得到了一个错误这一行:
jsp = new JScrollPane(txaResults, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
JScrollPane的预期成分和2个整数,指向垂直滚动和水平,所以如果你添加另一个参数,它应该rk,
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由于[构造函数文档](http://docs.oracle.com/javase/9/docs/api/javax/swing/JScrollPane.html#constructor.summary)清楚地显示没有构造函数需要组件和一个int作为参数。 – VGR
@VGR你会看看吗 –