У меня возникла проблема с текстовым полем JFrame.
Я пытаюсь сделать игру в словах, но проблема в том, что когда я пытаюсь создать текстовое поле, чтобы установить ввод, а затем проверить, правильно ли это слово, у меня есть слово, которое было закрыто.
Проблема в том, что когда я пытаюсь добавить Textfield, она исчезает, когда я делаю вещи в JFrame.Текстовое поле, добавленное в Jframe, исчезает, когда графика перерисовывается
public teksti() {
setTitle("Hirsipuu");
setSize(leveys,korkeus);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
setVisible(true);
setLocationRelativeTo(null);
setBackground(Color.white);
jp.add(tf); // adding JtextField (JTextField tf = new JTextField(30);)
add(jp);
}
и мой render()
, как это (только для целей тестирования).
private void render() {
BufferStrategy bs = this.getBufferStrategy(); // tehdään uusi bufferi
if (bs == null) {
createBufferStrategy(3);
return;
}
int R = (int) (Math.random()*256);
int G = (int)(Math.random()*256);
int B= (int)(Math.random()*256);
Color randomColor = new Color(R, G, B);
Graphics g = bs.getDrawGraphics();
g.drawString("Arvaa sana", 100 , 100);
g.setColor(Color.white);
g.fillRect(0, 50, leveys, korkeus);
g.setColor(randomColor);
g.setFont(h);
// g.drawLine(0,0,liikey*2-1,liikex);
for(int i = 0; i < salat.size(); i ++) {
g.drawString(salat.get(i),liikex+rand.nextInt(50),liikey+rand.nextInt(50));
}
System.out.println(liikex + " " + liikey);
g.dispose();
bs.show();
g.dispose();
}
Я могу получить текстовое поле, которое будет отображаться сверху в начале, но затем оно исчезает.
Кто-нибудь знает, есть ли лучший способ сделать это?
Active Rendering ('BufferStrategy') и алгоритм пассивного рендеринга Swing несовместимы друг с другом. Вам нужно будет либо использовать Swing API, либо «BufferStrategy», но не оба: – MadProgrammer