我想在我的文本区域添加滚动条,这样如果用户输入的数字大于20,则文本应该有一个滚动条。 基本上我正在尝试创建一个应用程序,其中用户输入一个他想要乘法表的数字,并且他输入他希望表格显示的数字。但是我的应用程序显示表格最多20个,例如12 X 20 = 240。其余的都是隐藏的。
public class LayoutM extends JFrame implements ActionListener {
private JTextField num1;
private JTextField num2;
private JTextArea answer;
private JButton go;
private int num11;
private int num22;
public LayoutM(){
super("Multiplication");
setLayout(new FlowLayout());
Dimension numDim = new Dimension(60,20);
Dimension ansDim = new Dimension(200,300);
Dimension goDim = new Dimension(60,20);
num1 = new JTextField("Number");
num1.setPreferredSize(numDim);
num2 = new JTextField("Upto");
num2.setPreferredSize(numDim);
go = new JButton("GO");
num2.setPreferredSize(goDim);
answer = new JTextArea(20,20);
answer.setPreferredSize(ansDim);
answer.setEditable(false);
add(num1, BorderLayout.CENTER);
add(num2,BorderLayout.CENTER);
add(go,BorderLayout.CENTER);
add(answer,BorderLayout.SOUTH);
go.addActionListener(this);
}
public static void main(String[] args){
LayoutM ob = new LayoutM();
ob.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ob.setVisible(true);
ob.setSize(300,400);
ob.setResizable(false);
ob.setLocationRelativeTo(null);
}
public void actionPerformed(ActionEvent event){
try{
answer.setText(" ");
num11 = Integer.parseInt(num1.getText());
num22 = Integer.parseInt(num2.getText());
for(int count = 1; count < num22+1;count++){
answer.append(num11+ " X "+ count+" = " + num11*count+" \n");
}
}catch(Exception e){
JOptionPane.showMessageDialog(null, "No decimals allowed");
}
}
}
答案 0 :(得分:1)
您应该将answer
对象放入新的JScrollPane对象,并将add
滚动窗格放到LayoutM
。
因此,在您的字段中,您应该添加:
private JScrollPane scroll;
而不是使用
add(answer,BorderLayout.SOUTH);
你应该使用
add(scroll,BorderLayout.SOUTH);
在actionPerformed()
方法中,您应该根据您从用户那里获得的数量来更改行数。把它放在for
循环之前:
if ( num22 > 20 ) {
answer.setRows(num22);
} else {
answer.setRows(20);
}