我正在编写带GUI的简单代码,该代码应该有一个应该可滚动的文本区域。到现在为止还挺好。 我创建了我的框架和文本区域,我可以写入它。接下来,我创建了我的ScrollPane并在其中添加了TextArea,然后将ScrollPane添加到框架中,但没有显示任何内容。 这是我现在的代码:
JFrame frame = new JFrame();
frame.setBounds(100, 100, 325, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
//textArea
JTextArea textArea = new JTextArea();
textArea.setEnabled(true);
textArea.setEditable(true);
JScrollPane scroll = new JScrollPane(textArea,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
textArea.setBounds(10, 101, 272, 149);
textArea.setWrapStyleWord(true);
frame.getContentPane().add(scroll);
答案 0 :(得分:3)
更改
frame.getContentPane().setLayout(null);
到
frame.getContentPane().setLayout(new BorderLayout());
你完成了
答案 1 :(得分:1)
您必须将边界设置为要添加到框架内容窗格的组件。在这种情况下,它应该是:scroll.setBounds(10,101,271,149)
。
但是,我强烈建议不要使用null layout
。例如,使用您选择的布局管理器BorderLayout
。在这种情况下,您不必担心边界,它将适合帧大小(当您更改帧的大小时它将调整大小)。这是你的例子,稍微调整一下:
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class Test {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setBounds(100, 100, 325, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(new BorderLayout());
// textArea
JTextArea textArea = new JTextArea();
textArea.setEnabled(true);
textArea.setEditable(true);
JScrollPane scroll = new JScrollPane(textArea, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
textArea.setWrapStyleWord(true);
frame.getContentPane().add(scroll, BorderLayout.CENTER);
frame.setVisible(true);
}
}
答案 2 :(得分:0)
通过查看此案例,我仍然在学习。
我有几个问题:
设置textArea的边界有问题
框架/容器的布局不应设置为null。
我删除了这句话,我尝试了这段代码,它显示了所需的textArea。
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
/*
* Tester class
*/
public class GuiTester extends JFrame{
public static void main(String[] args) {
// create new instance of JFrame
GuiTester s = new GuiTester();
// set the frame to be visible
s.setVisible(true);
}
/**
* Tester constructor calling method which initialise all widgets.
*/
GuiTester() {
//
invokeWidget();
}
/*
* This code is yours, just removed setting up the values of container and did that straight on the frame.
*/
void invokeWidget() {
setBounds(100, 100, 325, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
JTextArea textArea = new JTextArea();
textArea.setEnabled(true);
textArea.setEditable(true);
JScrollPane scroll = new JScrollPane(textArea, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
textArea.setWrapStyleWord(true);
add(scroll);
}
}
这是导致问题的行,以及将布局管理器设置为null。
// textArea.setBounds(10,101,272,149);
我希望我能帮忙,如果我错了,请纠正我。