public class AdminToken extends JFrame {
VirtualServer server;
@Override
public Container getContentPane() {
return super.getContentPane();
}
Удалите все, что не нужно для демонстрации проблемы.Это включает в себя VirtualServer
public AdminToken(VirtualServer server)
{
this.server = server;
getContentPane().setLayout(null);
setupGUI();
setLayout(new GridLayout(5,1));
}
getContentPane().setLayout
и setLayout
по сути одинаковые.Нет смысла устанавливать его дважды.Избегайте нулевых менеджеров по расположению.
void setupGUI()
{
setTitle("Token Management Server: " + server.getName() );
setSize(576,528);
setVisible(true);
setResizable(true);
setTitle
не требуется для демонстрации проблемы.Нет необходимости устанавливать размер.Установите предпочтительные размеры, когда это применимо, и позвольте менеджеру макета сделать макетsetResizable(true)
по умолчанию.То же относится и к button.setVisible(true);
Как правило, вы хотите setVisible(true);
в конце.
final JPanel panel = new JPanel();
panel.setLayout(new GridLayout(5,1));
К new GridLayout(5,1)
вы устанавливаете сетку из 5 рядов.Если вы добавите больше, это испортит макет.Из документа java:
строки - строки со значением ноль, означающим любое количество строк.
LoginForm.api.selectVirtualServer(server);
for( final PrivilegeKey tokens : LoginForm.api.getPrivilegeKeys()) {
final JLabel label = new JLabel(tokens.getToken() + " " + tokens.getGroupId() + " " + "\n");
panel.add(label);
JButton button = new JButton("Löschen");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
LoginForm.api.deletePrivilegeKey(tokens.getToken());
panel.remove(label);
panel.repaint();
}
});
button.setVisible(true);
button.setPreferredSize(new Dimension(87,25));
panel.add(button);
}
JScrollPane scrollPane = new JScrollPane (panel,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
add(scrollPane);
LoginForm.api.selectVirtualServerById(LoginForm.vServerId);
}
Здесь mcve демонстрируетя думаю, что вы стремитесь достичь:
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;
public class AdminToken extends JFrame {
public AdminToken()
{
setupGUI();
setVisible(true);
setResizable(true);
pack();
}
void setupGUI() {
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(0,2));
for(int row =0; row < 6; row++ ) {
panel.add(new JLabel("Label "+row));
panel.add(new JButton("Delete"));
}
JScrollPane scrollPane = new JScrollPane (panel);
add(scrollPane);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> new AdminToken() );
}
}