2017-05-14 4 views
2

저는이 대학의 프로젝트에서이 학기를 공부하고 있습니다. 나는이 버튼들을 통해 JButtons을 추가 할 때까지 잘 작동하는 3 가지 방법을 만들었습니다.이 메서드는 입력을 기다리고 있습니다. 사용자 (나는 스캐너를 사용하고 또한 BufferReader을 시도했다)하지만 지금은 프로그램이 실행을 멈추고 terminal.Also에서 어떤 종류의 오류도 발생하지 않는다. 여기에는 코드가있다. JButtons : 동일한 문제JButtons - 입력 할 수 없습니다.

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

public class Window extends JFrame implements ActionListener { 

JButton b1 = new JButton("Get input"); 
Main m0 = new Main(); 

public Window(Main main0) { 
    super("Management"); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    b1.addActionListener(this); 

    FlowLayout flow = new FlowLayout(); 
    setLayout(flow); 
    add(b1); 

    pack(); 

    setVisible(true); 

    m0 = main0; 
} 

public void actionPerformed(ActionEvent ae) { 
    Object source = ae.getSource(); 
    if(source == b1) { 
     m0.userInput(); 

    } 
} 
에 이르게

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

public class Window extends JFrame implements ActionListener { 

JButton b1 = new JButton("Load from file"); 
JButton b2 = new JButton("Save to file"); 
JButton b3 = new JButton("Add hotel and resrvations"); 
JButton b4 = new JButton("Search hotel by id"); 
JButton b5 = new JButton("Search reservation by name"); 

Main m0 = new Main(); 

public Window(Main main0) { 
    super("Management");//Name 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 


    b1.addActionListener(this); 
    b2.addActionListener(this); 
    b3.addActionListener(this); 
    b4.addActionListener(this); 
    b5.addActionListener(this); 

    FlowLayout flow = new FlowLayout(); 
    setLayout(flow); 


    add(b1); 
    add(b2); 
    add(b3); 
    add(b4); 
    add(b5); 
    pack(); 

    setVisible(true); 

    m0 = main0; 
} 

public void actionPerformed(ActionEvent ae) { 
    Object source = ae.getSource(); 
    if(source == b1) { 
     m0.loadFile(); 

    }else if(source == b2) { 
     m0.saveFile(); 

    }else if(source == b3) {    
     m0.addHotel(); 

    }else if(source == b4) {    
     m0.searchById(); 

    }else if(source == b5) {    
     m0.searchByName();  
    } 
}} 

보다 단순화 된 코드

}

그리고 문제는 3 개 마지막 methods.These 방법에서 발생

import java.io.*; 
    import java.util.*; 

    public class Main{ 

    public void userInput(){ 
     Scanner scan = new Scanner(System.in); 

     System.out.println("Give hotel's name : "); 
     String name = scan.nextLine(); 

     System.out.println(name); 
    } 

    public static void main(){   
     Main m0 = new Main(); 
     Window w = new Window(m0); 
    } 
} 

당신의 시간에 대한 주 class.Thanks에 존재하는 간단한 주요

!

+0

글쎄, 무엇보다도 IDE (Netbeans, Eclipse, IntelliJ)는 "실행이 중지되었습니다"라고 말하는가? 아무 일도 일어나지 않고 모든 것이 잘되는 것처럼 0으로 끝나나요? – Shiki

+0

BlueJ.It에서 일하고 있어요. 첫 번째 Scanner.nextLine()에서 addHotel()을 호출 할 때 실행을 멈 춥니 다. 입력을 제공해야하지만 터미널에 쓸 수 없습니다. 또한 호출 할 수 없습니다. 다른 방법. –

답변

1

GUI는 잘 작동 :

import java.awt.FlowLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.JButton; 
import javax.swing.JFrame; 

public class Window extends JFrame implements ActionListener { 

    JButton b1 = new JButton("Load from file"); 
    JButton b2 = new JButton("Save to file"); 
    JButton b3 = new JButton("Add hotel and resrvations"); 
    JButton b4 = new JButton("Search hotel by id"); 
    JButton b5 = new JButton("Search reservation by name"); 

    Main m0 ; 

    public Window(Main main0) { 

     super("Management");//Name 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     b1.addActionListener(this); 
     b2.addActionListener(this); 
     b3.addActionListener(this); 
     b4.addActionListener(this); 
     b5.addActionListener(this); 

     FlowLayout flow = new FlowLayout(); 
     setLayout(flow); 

     add(b1); 
     add(b2); 
     add(b3); 
     add(b4); 
     add(b5); 
     pack(); 

     setVisible(true); 

     m0 = main0; 
    } 

    @Override 
    public void actionPerformed(ActionEvent ae) { 

     Object source = ae.getSource(); 
     if(source == b1) { 
      m0.loadFile(); 
     }else if(source == b2) { 
      m0.saveFile(); 
     }else if(source == b3) { 
      m0.addHotel(); 
     }else if(source == b4) { 
      m0.searchById(); 
     }else if(source == b5) { 
      m0.searchByName(); 
     } 
    } 

    public static void main(String[] args) { 
     new Window(new Main()); 
    } 
} 

class Main { 

    public void loadFile() { 
     System.out.println("loadFile pressed"); 
    } 

    public void searchByName() { 
     System.out.println("searchByName pressed"); 
    } 

    public void searchById() { 
     System.out.println("searchById() pressed"); 
    } 

    public void addHotel() { 
     System.out.println("addHotel pressed"); 
    } 

    public void saveFile() { 
     System.out.println("saveFile pressed"); 
    } 
} 

그래서 문제가 게시되지 않았습니다 Main에 있어야합니다. 항상 mcve

편집을 게시 고려 mcve도 게시 잘 작동합니다 :

부여 호텔 : 출력이 예상로 콘솔에 나타납니다

import java.awt.FlowLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.util.Scanner; 
import javax.swing.JButton; 
import javax.swing.JFrame; 


public class Main{ 

    public void userInput(){ 
     Scanner scan = new Scanner(System.in); 

     System.out.println("Give hotel's name : "); 
     String name = scan.nextLine(); 

     System.out.println(name); 
    } 

    public static void main(String[] args){ //added String[] args 
     Main m0 = new Main(); 
     Window w = new Window(m0); 
    } 
} 

class Window extends JFrame implements ActionListener { 

    JButton b1 = new JButton("Get input"); 
    Main m0 = new Main(); 

    public Window(Main main0) { 
     super("Management"); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     b1.addActionListener(this); 

     FlowLayout flow = new FlowLayout(); 
     setLayout(flow); 
     add(b1); 

     pack(); 

     setVisible(true); 

     m0 = main0; 
    } 

    @Override 
    public void actionPerformed(ActionEvent ae) { 
     Object source = ae.getSource(); 
     if(source == b1) { 
      m0.userInput(); 
     } 
    } 
} 

을 이름 :
크라운 호텔
크라운 호텔

+0

어디서 새로운 코드를 게시 할 수 있습니까? (내 첫 게시일입니다) –

+0

코드를 이미 게시했습니다. 'Main'의 최소 버전을 편집하고 추가하십시오 – c0der

+0

방금 ​​게시했습니다. 도움을 주시면 감사하겠습니다. –

관련 문제