现在正在处理作业,我基本上正在编写我的第一个GUI。除了我的滚动条之外,一切都工作正常,添加它不仅不会显示,而且即使在我将它注释掉之后,添加的LAST元素(通过.add函数调用)也会覆盖整个GUI。将布局设置为null似乎解决了这个问题,但我不确定这是否有助于或阻碍第一个问题。我已经通过Oracle的文档和例子,并没有看到我需要什么。下面是相关的代码(即似乎在太空中漂浮的变量AG是一个单独的部分的一部分,我还没有贴上它,以便隔离GUI代码):JScrollPane没有出现,元素溢出
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Example
{
public static void main(String[] args)
{
JFrame mygui = new JFrame();
mygui.getContentPane();
mygui.setBounds(100, 100, 700, 500);
mygui.setLayout(new BorderLayout()); //playing with layout here
JLabel first = new JLabel("integer:");
JLabel second = new JLabel("float:");
JLabel third = new JLabel("short:");
JLabel fourth = new JLabel("long:");
JLabel fifth = new JLabel("byte:");
JLabel sixth = new JLabel("double:");
JLabel seventh = new JLabel("boolean:");
JTextField myint = new JTextField("" + a);
JTextField myfloat = new JTextField("" + b);
JTextField myshort = new JTextField("" + c);
JTextField mylong = new JTextField("" + d);
JTextField mybyte = new JTextField("" + e);
JTextField mydbl = new JTextField("" + f);
JTextField mybool = new JTextField("" + g);
JTextArea myarea = new JTextArea();
JScrollPane scrolla = new JScrollPane(myarea);
first.setOpaque(true);
first.setBounds(20, 20, 50, 20);
second.setOpaque(true);
second.setBounds(20, 70, 50, 20);
third.setOpaque(true);
third.setBounds(20, 120, 50, 20);
fourth.setOpaque(true);
fourth.setBounds(20, 170, 50, 20);
fifth.setOpaque(true);
fifth.setBounds(20, 220, 50, 20);
sixth.setOpaque(true);
sixth.setBounds(20, 270, 50, 20);
seventh.setOpaque(true);
seventh.setBounds(20, 320, 50, 20);
myint.setBounds(70, 20, 50, 20);
myint.setOpaque(true);
myfloat.setBounds(70, 70, 50, 20);
myfloat.setOpaque(true);
myshort.setBounds(70, 120, 50, 20);
myshort.setOpaque(true);
mylong.setBounds(70, 170, 80, 20);
mylong.setOpaque(true);
mybyte.setBounds(70, 220, 50, 20);
mybyte.setOpaque(true);
mydbl.setBounds(70, 270, 50, 20);
mydbl.setOpaque(true);
mybool.setBounds(70, 320, 50, 20);
mybool.setOpaque(true);
myarea.setBounds(200, 50, 250, 200);
myarea.setOpaque(true);
scrolla.setPreferredSize(new Dimension(250, 200));
mygui.add(first);
mygui.add(second);
mygui.add(third);
mygui.add(fourth);
mygui.add(fifth);
mygui.add(sixth);
mygui.add(seventh);
mygui.add(myint);
mygui.add(myfloat);
mygui.add(myshort);
mygui.add(mylong);
mygui.add(mybyte);
mygui.add(mydbl);
mygui.add(mybool);
mygui.add(scrolla);
myarea.append("" + errcheck + "\n");
myarea.append("" + valcheck + "\n");
while(y < 2)
{
myarea.append("" + a + "\n");
myarea.append("" + b + "\n");
myarea.append("" + c + "\n");
myarea.append("" + d + "\n");
myarea.append("" + e + "\n");
myarea.append("" + f + "\n");
myarea.append("" + g + "\n");
myarea.append("" + w + "\n");
myarea.append("" + u + "\n");
myarea.append("" + v + "\n");
myarea.append("" + secondary + "\n");
myarea.append("" + whilecount + "\n");;
y++;
a--;
}
mygui.setVisible(true);
mygui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
我敢肯定这件事情简单但任何反馈意见。
请不要建议新手使用'null'布局,他们有足够的处理,而不必处理。这是一种不好的做法,在这种情况下,除了进一步混淆它们之外别无其他。 – MadProgrammer 2013-03-07 05:20:07
-1,将组件添加到框架时,它会将组件添加到内容窗格中,因此使用getContentPane()不是必需的,并且不会修复/更改问题。此外,使用空布局是一个坏主意,不应该用于创建像这样的表单。更好的方法是使用适当的LayoutManager创建JPanel并将面板添加到框架。 – camickr 2013-03-07 05:23:29
@MadProgrammer null布局有什么问题?布局管理器是相当复杂的领域,明确指定所有组件的边界可能是新手轻松实现工作的好方法。 – 2013-03-07 05:23:56