2013-05-12 3 views
1

Недавно я играл с Java Swing и пытаюсь создать собственную консоль запуска Minecraft. Когда я нажимаю кнопку с надписью «Свойства», она должна перейти на новую панель и сделать в какой-то момент. Однако по какой-то причине я не могу видеть, что он больше не работает. Кто-нибудь может помочь?ActionEvent перестала работать без видимой причины?

package custommcserver; 

import java.awt.GridLayout; 
import java.awt.event.*; 
import javax.swing.*; 

class Window extends JFrame implements ActionListener , ItemListener 
{ 
    JPanel mainPnl = new JPanel(new GridLayout(2,1)); 
    JPanel propPnl = new JPanel(); 
    JButton startBtn = new JButton("Start"); 
    JButton stopBtn = new JButton("Stop"); 
    JButton propBtn = new JButton("Properties"); 

    JCheckBox allowNether = new JCheckBox("Allow players to visit the Nether dimension"); 

    public Window() 
    { 
     super("Custom Minecraft Server Launcher") ; 
     setSize(500,200) ; 
     setDefaultCloseOperation(EXIT_ON_CLOSE) ; 
     add(mainPnl) ; 
     mainPnl.add(startBtn); 
     mainPnl.add(stopBtn); 
     mainPnl.add(propBtn); 
     stopBtn.setEnabled(false); 
     startBtn.addActionListener(this); 
     stopBtn.addActionListener(this); 
     propBtn.addActionListener(this); 
     setVisible(true); 
    } 

    @Override 
    public void actionPerformed(ActionEvent event) 
    { 

     if (event.getSource() == stopBtn) 
     { 
      stopBtn.setEnabled(false); 
      startBtn.setEnabled(true); 
     } 

     if (event.getSource() == startBtn) 
     { 
      stopBtn.setEnabled(true); 
      startBtn.setEnabled(false); 


     if (event.getSource() == propBtn) 
     { 
      add(propPnl); 
      mainPnl.setVisible(false); 
      propPnl.setVisible(true); 
      propPnl.add(allowNether); 
     } 

    } 
} 

    @Override 
    public void itemStateChanged(ItemEvent event) { 
     throw new UnsupportedOperationException("Not supported yet."); 
    } 
} 

ответ

2

2 вопроса:

  1. Линейка

    if (event.getSource() == propBtn) {

    находится в чеке if заявления для startBtn так что нет никакой проверки эффективна для этой кнопки. Переместите это из этого блока if.

  2. Вызов revalidate и repaint на стороне НОТ JFrame


:

  • CardLayout обеспечивает функциональные возможности замены компонента с другой. Прочитано How to Use CardLayout
  • Использовать анонимные ActionListener экземпляры классов, чтобы избежать проблемы №1.
+0

Не могли бы вы быть более конкретными? Извините, я новичок в Java ... –

+0

Это не работает. Может быть, я делаю что-то неправильно ... –

+0

Да, 2 других вопроса, обновление ... – Reimeus

Смежные вопросы