Привет, Я делаю игру на Java, которая случайным образом генерирует 100 номеров, а затем попросите пользователя запомнить столько, сколько сможете, а затем попытаться вызвать столько, сколько сможете. В моей игре используется JPanel и объект Graphics g для выполнения всего чертежа. Как мне «нарисовать» поле JText или заставить его работать на jpanel?Получение ввода текста без качания в Java
ответ
Добавить ActionListener в JTextField, а затем добавить этот JTextField в JPanel. Теперь добавьте этот JPanel в JFrame, используя this.add(jpnel, BorderLayout.SOUTH);
Создайте новый класс класса JPanel, в котором вы рисуете вещи. Добавьте JPanel в JFrame as, this.add(new Board(), BorderLayout.CENTER);
. Здесь я закодировал один пример для вас. Теперь вы должны иметь представление о том, как это сделать ...
класс Board
public class Board extends JPanel {
int[] numbers = {3, 25, 5, 6, 60, 100};
int index = 0;
static String num;
boolean once = true;
FontMetrics fm;
Board() {
setPreferredSize(new Dimension(400, 200));
setBackground(Color.decode("#ffde00"));
}
@Override
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2 = (Graphics2D) g;
if (index < 6) {
num = numbers[index] + "";
} else {
num = "Game Ended.";
Window.ans.setEditable(false);
}
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2.setFont(new Font("Arial", Font.PLAIN, 50));
if(once){
fm = g2.getFontMetrics();
once = false;
}
int x = ((getWidth() - fm.stringWidth(num))/2);
int y = ((getHeight() - fm.getHeight())/2) + fm.getAscent();
g2.drawString(num + "", x, y);
index++;
}
}
класс Window
public class Window extends JFrame {
JPanel p = new JPanel();
JLabel lbl = new JLabel("Enter the number if you have seen it before, Else empty.");
JLabel res = new JLabel("....");
static JTextField ans = new JTextField(10);
Board board = new Board();
public Window() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
add(board, BorderLayout.CENTER);
p.setLayout(new BorderLayout(8, 8));
p.add(lbl, BorderLayout.WEST);
ans.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (ans.getText().equals(Board.num)) {
res.setText("Good");
} else {
res.setText("Bad");
}
ans.setText("");
board.repaint();
}
});
p.add(ans, BorderLayout.CENTER);
p.add(res, BorderLayout.EAST);
p.setBorder(new EmptyBorder(10, 10, 10, 10));
this.add(p, BorderLayout.SOUTH);
setResizable(false);
pack();
setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new Window();
}
});
}
}
Почему вы добавляете 'KeyListener' в' JTextField'? Для этого нужен 'DocumentListener'. Кроме того, если вы только слушаете ENTER, вы можете добавить «ActionListener» в 'JTextField', который запускается при каждом нажатии ENTER. – Robin
Он мог бы просто использовать jtf.getText(); – RamanSB
@RamanSB Он генерирует случайные числа. – CodeRunner
- 1. Java-проекты без качания
- 2. Java - настройка цвета качания текста в JTextArea
- 3. Получение текста ввода пользователя без элементов ввода HTML
- 4. Получение ввода в java
- 5. Java GUI Программирование качания
- 6. Получение пользовательского ввода без ввода на консоль Java
- 7. Получение значения ввода текста HTML
- 8. Получение номера из текста ввода
- 9. Кнопки удержания Java-качания
- 10. Использование таймера качания в java
- 11. Java-поток повторяет форму качания
- 12. Получение данных в сервлете от качания
- 13. Получение текста между ** в Java
- 14. Проблемы с таймером качания Java
- 15. Получение ввода java
- 16. Проверка интервала без ввода текста
- 17. Получение ввода джойстика в Java
- 18. Получение пользовательского ввода в java-игре
- 19. Java-изменение цвета фона качания?
- 20. состояние ошибки для элементов ввода качания
- 21. Запретить закрытие Java-качания Приложение
- 22. Как остановить таймер качания java
- 23. Предотвратить отправку без текста в поле ввода
- 24. C# и IME - получение текущего текста ввода
- 25. Скрыть компонент качания без повторной калибровки макета?
- 26. Получение текста ввода обратно из MessageDigest
- 27. Получение пустого ввода от текста tkinter
- 28. Scala.js jQuery: Получение текста из ввода html
- 29. Получение jQuery var из текста ввода
- 30. Python/Tkinter получение текста из поля ввода
Почему бы просто не использовать 'JTextField' и просто добавить его в контейнер по вашему выбору? Возможно, вам стоит взглянуть на [Как использовать текстовые поля] (http://docs.oracle.com/javase/tutorial/uiswing/components/textfield.html) и [Укладка компонентов в контейнере] (http://docs.oracle.com/javase/tutorial/uiswing/layout/index.html) – MadProgrammer