我一直想补充 JScrollBar
变成一个 JTextArea
,但当我测试它时,滚动条不会出现。另外,我想最大化文本区域,但它不会变得更大,即使我改变大小值。这是我的密码:
class EFrame extends JFrame implements ActionListener {
JLabel jl1, jl2, jl3, jl5;
JTextArea jta;
JPanel jpBase, jpTop, jpm, jpmm, jpmb, jpBottom, jpBBT;
JTextField jtf1, jtf2, jtf3, jtf4, jtf5;
JScrollBar jBar;
JScrollPane jsp;
EFrame() {
setTitle("GUI");
setSize(1000, 1000);
setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setMinimumSize(new Dimension(100, 100));
this.setMaximumSize(new Dimension(1920, 1080));
jsp = new JScrollPane(jta, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
jpBase = new JPanel();
jpTop = new JPanel();
jpm = new JPanel();
jpmm = new JPanel();
jpmb = new JPanel();
jpBottom = new JPanel();
jpBBT = new JPanel();
jtf1 = new JTextField(10);
jtf2 = new JTextField(10);
jtf3 = new JTextField(10);
jtf5 = new JTextField(10);
add(jpBase);
jpBase.setLayout(new GridLayout(8, 1));
jpBase.setSize(1000, 1000);
jpBase.add(jpTop);
jpBase.add(jpm);
jpBase.add(jpmm);
jpBase.add(jpmb);
jpBase.add(jpBottom);
jpBase.add(jpBBT);
jpTop.setLayout(new GridLayout(1, 0));
jpm.setLayout(new GridLayout(1, 0));
jpmm.setLayout(new GridLayout(1, 0));
jpBottom.setLayout(new GridLayout(1, 0));
jpBBT.setSize(1000, 1000);
jpBBT.add(jta);
jta.setSize(1000, 1000);
jta.add(jsp);
this.setVisible(true);
}
// ...
}
我做错什么了?
1条答案
按热度按时间bpsygsoo1#
该代码不会创建文本区域的示例。它只定义一个空的引用。
您的代码应该类似于:
上面的代码将创建一个包含10行40列的文本区域。
然后使用文本区域(正确)创建滚动窗格:
注意:您只需要:
默认行为是仅在需要时显示滚动条。
然后你要:
组件只能有一个父级。因此,第二条语句是从滚动窗格中删除文本区域。
代码应为:
现在你需要摆脱:
设置大小不起任何作用。使用行/列是指定大小的正确方法。
将滚动窗格添加到文本区域是没有意义的。您已经将文本区域添加到滚动窗格中。你不能两者兼得。
阅读swing教程中有关如何使用文本区域的部分,了解更多信息和工作代码。下载工作代码并将其作为类的起点,这样您的代码结构就更好了。
另外,使用描述性变量名使代码更易于阅读、理解和维护。