好的,所以我有两个课程,他们并没有真正相互联系。 一个是输入中的另一个图形(通过使用扫描仪的终端)。我想用JTextField替换扫描仪,但我很难这样做..
我有点迷失在这里......
这是类GUI
//Constructor to create the UI components
public UnoGraphics() {
//JButtons----------------------------
viewCards = new JButton("Move Card");
input = new JTextField(5);
//Creates a canvas and set the properties
canvas = new DrawCanvas();
canvas.setPreferredSize(new Dimension(CANVAS_WIDTH,CANVAS_HEIGHT));
this.setContentPane(canvas);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
//This is How I was thinking of implementing my input------------HERE---------------->
input.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
inputText = input.getText();
}});//End ActionListener()
this.pack();
this.setTitle("Uno!");
this.setVisible(true);
}//End Constructor
//Custom drawing canvas (designed as inner class). This is were we draw/change the cards
class DrawCanvas extends JPanel {
// Custom drawing codes--------------
@Override
public void paintComponent(Graphics g) {
//Set the background to black
super.paintComponent(g);
setBackground(Color.black);
//cards being drawn-------------------
//buttons and text fields
add(viewCards);
add(input);
}//End PaintComponent()
}//End DrawCavas()
}//End Program
带扫描仪的第二类输入:
public class CommandLinePlayer extends Player
{
//private String inputText;
// constructor
public CommandLinePlayer(String aname)
{
//super aname is from the super class player;
super(aname);
}
// command line player can also say uno. This uses scanner(reads user in puts from keyboard) and the response should be typed in
public boolean sayUno()
{
System.out.println("Would you like to say uno? Yes or No");
Scanner scan = new Scanner(System.in);
String yes = scan.next();
// returns response
//returns yes if the user types yes and ignores the case
return yes.equalsIgnoreCase("Yes");
}
//this method is the choose card of type int takes int one argument of type Card
// command line version (normal player on command line)
//this method takes in the card from your hand and "sends" it to the controller
protected int chooseCard(Card topCard)
{
// display hand
System.out.println("\nHere is the topCard: " + topCard);
System.out.println("Your hand has:");
// loops through the players(commandlineplayer) hand and prints out the players cards. Index could start at 0, but 1 would be the first card
for(int index = 0; index < numOfCards; index ++)
{
System.out.println("Card # " + index + ": " + hand[index]);
}
// choose Card prompts the player to match, or pick a card based on the index, and then press enter.
// if a card does not match the topcard, a key corresponding to any card can be pressed. This would automatically add a
// card to a players hand.
System.out.println("Play a card #. If you don't have a card to play, choose any card # to draw.");
Scanner scan = new Scanner(System.in);
int num = scan.nextInt();
return num;
}
// this is the choose color method for the command line player but only if it is a wild card does this method takes place
// command line player can choose a cards color based on the options displayed on the screen.(System.out.println...statements)
public Card.Color chooseColor()
{
// choose a color using scanner
Scanner scanin = new Scanner(System.in);
System.out.println("Choose a color by pressing a number corresponding to your choice:");
System.out.println("Your options are 1.Red 2.Green 3.Yellow 4. Blue");
// the switch corresponds a number (color) to the cases, and returns a chosen card.
int color = 0;
color = scanin.nextInt();
switch (color)
{
case 1: System.out.println("The color you chose is: Red");
return Card.Color.Red;
case 2: System.out.println("The color you chose is: Green");
return Card.Color.Green;
case 3: System.out.println("The color you chose is: Yellow");
return Card.Color.Yellow;
case 4: System.out.println("The color you chose is: Blue");
return Card.Color.Blue;
default: System.out.println("NONE");
}
return Card.Color.None;
}
public class inputListener implements ActionListener {
public void actionPerformed(ActionEvent event) {
//I Was Thinking something like this-----------HERE-----
}
}
}
答案 0 :(得分:1)
以下是您需要的相关代码块,您应该能够自己将它们集成到代码中。
public class Controller {
public void startMethod() {
final UIClass myUI = new UIClass();
myUI.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
handleUIInformation(myUI);
}
}
}
private void handleUIInformation(UIClass myUI) {
String textval = myUI.textField.getText();
// here you do whatever you want with the text
}
}
public class UIClass {
JButton button;
JTextField textField;
public UIClass() {
button = new JButton();
textField = new JTextField();
textField.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_ENTER) {
button.doClick();
}
}
});
}
public void addActionListener(ActionListener al) {
button.addActionListener(al);
}
}