Я впервые использую свинг и у меня проблемы с JPanel - PullRequest
0 голосов
/ 17 января 2019

Я работаю над программой для моей школы. Это как match.com, но для государственной школы. Да, было разрешение от школы, чтобы сделать это.

Впервые я использовал свинг, и у меня возникла проблема с добавлением JPanel в мой JFrame, чтобы я мог видеть и использовать кнопку.

    private void Framing()
    {
    JPanel Panel = new JPanel(); 
    Panel.setLayout(new BorderLayout());
    JFrame Frame = new JFrame("Warning");
    Frame.setUndecorated(true);
    JButton OK = new JButton("EXIT");
    OK.addActionListener((ActionEvent event) -> {System.exit(0);});
    OK.setBounds(100,100,100,100);
    Panel.add(OK, BorderLayout.CENTER);
    Frame.getContentPane().add(Panel, BorderLayout.CENTER);
    Panel.setLocation((Frame.getWidth()-Panel.getWidth())/2,0);
    Frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
    Frame.setLocation(600, 300);
    Frame.setResizable(false);
    Frame.setLayout(null);
    Frame.setVisible(true);
}

Какой самый быстрый способ исправить проблему, если панель даже не отображается? Любые решения приветствуются.

1 Ответ

0 голосов
/ 19 января 2019

Поскольку вы являетесь новым программистом Swing, я попытаюсь объяснить приведенный ниже пример кода. Здесь я взял ваш код и сделал несколько изменений. Смотрите мои комментарии в коде.

С этими изменениями теперь программа работает и показывает окно с большой кнопкой. Когда пользователь нажимает кнопку, программа закрывается.

import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;

public class SwingTest
{
  private void Framing() //Better method name would be "showFrame()"
  {
    JPanel Panel = new JPanel(); //Better variable name would be "panel"
    Panel.setLayout(new BorderLayout());
    JFrame Frame = new JFrame("Warning"); //Better variable name would be "frame"
    Frame.setUndecorated(true);
    JButton OK = new JButton("EXIT"); //Better variable name would be "exitButton"
    OK.addActionListener((ActionEvent event) -> {System.exit(0);});

    //Not necessary. Layout manager will handle this.
    //OK.setBounds(100,100,100,100);

    Panel.add(OK, BorderLayout.CENTER);
    Frame.getContentPane().add(Panel, BorderLayout.CENTER);

    //Not necessary. Layout manager will handle this.
    //Panel.setLocation((Frame.getWidth()-Panel.getWidth())/2,0);

    Frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
    Frame.setLocation(600, 300);
    Frame.setResizable(false);

    //This is the main problem. You should avoid this.
    //Frame.setLayout(null);

    Frame.setVisible(true);
  }

  public static void main(String[] args)
  {
    new SwingTest().Framing();
  }
}
...