文字区域超出window区域
Text area exceeds the window area
我在java中写过程序程序是将KM转换为英里和英里转换为KM程序工作正常但问题是结果文本区域超出了区域所以没有出现附加代码下方的全文。所以我想如果它到达行尾它会转到新行
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Converter extends JFrame implements ActionListener {
JLabel label = new JLabel("Distance : ");
JTextField input = new JTextField(10);
JButton button = new JButton("Convert");
JTextArea output = new JTextArea(10,15);
CheckboxGroup cbg = new CheckboxGroup();
Checkbox cb1 = new Checkbox("Convert MILES to KM", cbg, true);
Checkbox cb2 = new Checkbox("Convert KM to MILES", cbg, false);
public static void main(String args[]) {
Converter s = new Converter();
s.setVisible(true);
}
public Converter() {
setLayout(null);
setSize(300,400);
//left-down-width-hegiht
cb1.setBounds(60,30,150,30);
cb2.setBounds(60,60,150,30);
label.setBounds(30,90,120,30);
input.setBounds(90,95,170,20);
button.setBounds(100,130,90,30);
output.setBounds(45,168,200,165);
add(cb1);
add(cb2);
add(label);
add(input);
add(button);
add(output);
button.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
if (cb1.getState() ) {
if (e.getSource() == button) {
double d = Double.parseDouble(input.getText());
double d2 = d / 0.62;
String str2 = String.valueOf(d2);
output.setText(d + "miles equals to " + str2 + " kilometers");
}
}
if (cb2.getState()) {
if (e.getSource() == button){
double d = Double.parseDouble(input.getText());
double d2 = d * 0.62;
String str2 = String.valueOf(d2);
output.setText(d + " kilometers equals to " + str2 + " miles ");
}
}
}
}
如果您的目标纯粹是在文本区域进行换行,那么您可以使用 JTextArea 的 built-in 函数 setLineWrap.
将真布尔值作为参数传递给 setLineWrap 例如 setLineWrap(true) 将打开 JTextArea 组件的换行.传递一个错误的布尔值作为参数将关闭换行
在您的代码中,它将按如下方式使用。
output.setLineWrap(true);
Converter 构造函数将如下所示。
public Converter() {
// Turn on line wrapping.
output.setLineWrap(true);
setLayout(null);
setSize(300, 400);
// left-down-width-hegiht
cb1.setBounds(60, 30, 150, 30);
cb2.setBounds(60, 60, 150, 30);
label.setBounds(30, 90, 120, 30);
input.setBounds(90, 95, 170, 20);
button.setBounds(100, 130, 90, 30);
output.setBounds(45, 168, 200, 165);
add(cb1);
add(cb2);
add(label);
add(input);
add(button);
add(output);
button.addActionListener(this);
}
我在java中写过程序程序是将KM转换为英里和英里转换为KM程序工作正常但问题是结果文本区域超出了区域所以没有出现附加代码下方的全文。所以我想如果它到达行尾它会转到新行
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Converter extends JFrame implements ActionListener {
JLabel label = new JLabel("Distance : ");
JTextField input = new JTextField(10);
JButton button = new JButton("Convert");
JTextArea output = new JTextArea(10,15);
CheckboxGroup cbg = new CheckboxGroup();
Checkbox cb1 = new Checkbox("Convert MILES to KM", cbg, true);
Checkbox cb2 = new Checkbox("Convert KM to MILES", cbg, false);
public static void main(String args[]) {
Converter s = new Converter();
s.setVisible(true);
}
public Converter() {
setLayout(null);
setSize(300,400);
//left-down-width-hegiht
cb1.setBounds(60,30,150,30);
cb2.setBounds(60,60,150,30);
label.setBounds(30,90,120,30);
input.setBounds(90,95,170,20);
button.setBounds(100,130,90,30);
output.setBounds(45,168,200,165);
add(cb1);
add(cb2);
add(label);
add(input);
add(button);
add(output);
button.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
if (cb1.getState() ) {
if (e.getSource() == button) {
double d = Double.parseDouble(input.getText());
double d2 = d / 0.62;
String str2 = String.valueOf(d2);
output.setText(d + "miles equals to " + str2 + " kilometers");
}
}
if (cb2.getState()) {
if (e.getSource() == button){
double d = Double.parseDouble(input.getText());
double d2 = d * 0.62;
String str2 = String.valueOf(d2);
output.setText(d + " kilometers equals to " + str2 + " miles ");
}
}
}
}
如果您的目标纯粹是在文本区域进行换行,那么您可以使用 JTextArea 的 built-in 函数 setLineWrap.
将真布尔值作为参数传递给 setLineWrap 例如 setLineWrap(true) 将打开 JTextArea 组件的换行.传递一个错误的布尔值作为参数将关闭换行
在您的代码中,它将按如下方式使用。
output.setLineWrap(true);
Converter 构造函数将如下所示。
public Converter() {
// Turn on line wrapping.
output.setLineWrap(true);
setLayout(null);
setSize(300, 400);
// left-down-width-hegiht
cb1.setBounds(60, 30, 150, 30);
cb2.setBounds(60, 60, 150, 30);
label.setBounds(30, 90, 120, 30);
input.setBounds(90, 95, 170, 20);
button.setBounds(100, 130, 90, 30);
output.setBounds(45, 168, 200, 165);
add(cb1);
add(cb2);
add(label);
add(input);
add(button);
add(output);
button.addActionListener(this);
}