Работа над заданием прямо сейчас, и я в основном пишу свой первый графический интерфейс. Все работает отлично, за исключением моей полосы прокрутки - при добавлении не только она не отображается, но даже после того, как я прокомментировал это, добавленный элемент LAST (через вызов функции .add) охватывает ENTIRE GUI. Установка макета на нуль, похоже, исправила это, но я не уверен, что это поможет или помешает первой проблеме. Я уже прошел через документацию и примеры Oracle и не видел, что мне нужно. Здесь уместен код (переменные аги, которые кажутся парящими в пространстве является частью отдельного раздела, и я не вставил его так, чтобы изолировать код 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);
}
}
Я уверен, что это что-то простой, но любая обратная связь приветствуется.
Пожалуйста, никогда не предлагайте новичкам использовать «нулевой» макет, им достаточно иметь дело, не имея дело с этим. Это плохая практика, и в этой ситуации не приносит никакой пользы, кроме того, чтобы путать их дальше. – MadProgrammer
-1, Когда вы добавляете компонент в фрейм, он добавляет компонент в область содержимого для вас, поэтому использование getContentPane() не требуется и не будет исправлять/изменять проблему. Кроме того, использование пустого макета - плохая идея и не должно использоваться для создания такой формы. Лучший способ сделать это - создать JPanel с соответствующим LayoutManager (ов) и добавить панель в фрейм. – camickr
@MadProgrammer В чем проблема с нулевой компоновкой? Менеджеры макетов - довольно сложная область, и конкретные ограничения для всех компонентов явно могут быть хорошим способом для начинающих упростить работу. –