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