public class buttonActionStart implements ActionListener { // overwritten ActionListener
public void actionPerformed (ActionEvent e){
JFrame window2 = new JFrame("Main Game"); //create empty frame
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
window2.setSize(screenSize.width,screenSize.height);
window2.add(new JPanel(){
public void paintComponent(Graphics graph){
super.paintComponent(graph);
Board board = new Board();
graph.drawString(board.sqaures[1].getName(),440,560);
graph.drawString(board.sqaures[2].getName(),335,560);
graph.drawString(board.sqaures[3].getName(),225,560);
graph.drawString(board.sqaures[4].getName(),145,560);
graph.drawString(board.sqaures[5].getName(),30,560);
graph.drawString(board.sqaures[6].getName(),25,460);
graph.drawString(board.sqaures[7].getName(),25,360);
graph.drawString(board.sqaures[8].getName(),35,260);
graph.drawString(board.sqaures[9].getName(),25,160);
graph.drawString(board.sqaures[10].getName(),25,60);
graph.drawString(board.sqaures[11].getName(),140,60);
graph.drawString(board.sqaures[12].getName(),240,60);
graph.drawString(board.sqaures[13].getName(),340,60);
graph.drawString(board.sqaures[14].getName(),440,60);
graph.drawString(board.sqaures[15].getName(),530,60);
graph.drawString(board.sqaures[16].getName(),550,160);
graph.drawString(board.sqaures[17].getName(),545,260);
graph.drawString(board.sqaures[18].getName(),540,360);
graph.drawString(board.sqaures[19].getName(),550,460);
for (int i = 0; i < 6; i++)
graph.drawRect(10 + (i*100),10,100,100);
for (int j = 0; j < 4; j++)
graph.drawRect(10,110 + (j*100),100,100);
for (int k = 0; k < 4; k++)
graph.drawRect(510,110 + (k*100),100,100);
for (int l = 0; l < 6; l++)
graph.drawRect(10 + (l*100),510,100,100);
InputStream resource = UI.class.getResourceAsStream("player1.png");
Image player1Image = null;
try{
player1Image = ImageIO.read(resource);
}catch (IOException e){
e.printStackTrace();
}
resource = UI.class.getResourceAsStream("player2.png");
Image player2Image = null;
try{
player2Image = ImageIO.read(resource);
}catch (IOException e){
e.printStackTrace();
}
resource = UI.class.getResourceAsStream("player3.png");
Image player3Image = null;
try{
player3Image = ImageIO.read(resource);
}catch (IOException e){
e.printStackTrace();
}
resource = UI.class.getResourceAsStream("player4.png");
Image player4Image = null;
try{
player4Image = ImageIO.read(resource);
}catch (IOException e){
e.printStackTrace();
}
graph.drawImage(player1Image, 511, 511, null);
graph.drawImage(player2Image, 585, 510, null);
graph.drawImage(player3Image, 511, 585, null);
graph.drawImage(player4Image, 585, 585, null);
}
});
window2.setVisible(true);
}
}
Я развиваю вид настольной игры, и эти четыре изображения будут служить значком игрока. Я хочу, чтобы игрок щелкнул изображение, которое им назначено вручную, затем щелкните в другом месте на экране, и изображение будет «обновлено» до этой позиции.Как добавить mouselistener к изображениям, которые вставляются с помощью graph.drawimage()?
«квадрат» и совет»будет мой сам определенный класс.
я получил еще одно окно, которое будет иметь кнопку„Пуск“и запуская выше графику, который можно сделать в новом окне.
Я нашел много людей, предлагая, чтобы добавить изображение с помощью JLabel и добавить JLabel в JFrame, но я обнаружил, что изображение будет охватывать мой графический
Для имени [божества]: прекратить чтение изображения в 'paintComponent' - ваш опыт будет крайне медленным. Прочитайте один раз, нарисуйте их потом столько раз, сколько захотите, но перестаньте читать их каждый раз, когда компонент нуждается в боли! –
Извините, не могли бы вы подробнее? Я не совсем понимаю, что вы имеете в виду. Вы имеете в виду, что это плохой способ читать изображение в paintComponent()? Я хочу еще раз спросить, нужно ли мне добавить JLabel в JPanel, прежде чем добавлять JLabel прямо в JFrame? –
'Вы имеете в виду, что это плохой способ прочитать изображение в paintComponent()?' - yes. Метод рисования предназначен только для рисования и ни для чего другого. Изображения должны быть прочитаны в конструкторе вашего класса, поэтому они читаются только один раз, когда класс создается. Поэтому не создавайте класс Board. – camickr