Добавление кнопок в JPanel с существующей кнопкой в ​​графическом интерфейсе - PullRequest
0 голосов
/ 21 ноября 2018

Я пытаюсь запрограммировать свое первое Java-приложение и хочу создать кнопки в GUI.Вот программа, которую я хочу запустить.

Если я нажму на существующую кнопку в графическом интерфейсе.Я хотел бы добавить ActionListener, но я просто хочу добавить только кнопку.Если я нажму обе кнопки в моем графическом интерфейсе.Сначала запустите LoadProgress, затем Hinzufügen.Как я могу исправить это так, чтобы я создал кнопку, только если я нажму на кнопку Hinzufügen.

private void pnlLeft(){
   JProgressBar bar = new JProgressBar();
   bar.setPreferredSize(new Dimension(0, 30));
   getContentPane().add(BorderLayout.SOUTH, bar);

   JPanel panel2 = new JPanel();
   panel2.setLayout(new BoxLayout(panel2, BoxLayout.PAGE_AXIS));

   JButton btnLoad = new JButton("LoadProgress");
   JButton leftbutton = new JButton("Hinzufügen");
   panel2.add(leftbutton);
   panel2.add(Box.createVerticalGlue());
   panel2.add(btnLoad);
   getContentPane().add(BorderLayout.WEST, panel2);
      leftbutton.addActionListener(new ActionListener() {

      @Override
      public void actionPerformed(ActionEvent arg0) {   
         if(arg0.getActionCommand().equals("Hinzufügen")) { 
            JButton test = new JButton("TEST");
            panel2.add(test);
         }
      }
   });

   btnLoad.addActionListener(new ActionListener() {

   @Override
   public void actionPerformed(ActionEvent e) {
      // TODO Auto-generated method stub
      new Thread() {
         @Override
         public void run() {
            if(e.getActionCommand().equals("LoadProgress")) {   
               bar.setStringPainted(true);
               for ( int f = 1; f <= 100; f++) {
                  try {
                     Thread.sleep((long) (Math.random() * 100));
                  }catch (InterruptedException ex){
                     ex.printStackTrace();
                  } 
                  bar.setString("Lade Bestand..." + f + "%");
                  bar.setValue(f);
               }
               bar.setValue(0);
               bar.setStringPainted(false);     
            }
         }
      }.start();
   }});
};

1 Ответ

0 голосов
/ 21 ноября 2018

Когда вы добавляете (или удаляете) компонент из видимого графического интерфейса, базовый код выглядит так:

panel.add(...);
panel.revalidate(); // invokes layout manager
panel.repaint(); 

В противном случае размер компонента по умолчанию равен (0, 0), поэтому рисовать нечего.

...