Мне хорошо известно о нескольких других сообщениях подобного характера. Я пытался использовать их, чтобы помочь себе, однако либо я просто что-то упускаю из виду, либо в моем коде не хватает чего-то важного для правильной работы. У меня есть основная JPanel, в которой я пытаюсь изменить изображение каждый раз при нажатии кнопки (и я начинаю понимать, что мой план по изменению макета при нажатии другой кнопки будет намного сложнее), но когда это заходя в раздел @Override, я обнаруживаю, что значок нельзя изменить, или когда я пытаюсь реализовать что-то, что я нахожу из Stack Overflow или из предложенного в VSCode, это приводит к множеству красных линий.
Я хочу иметь массив изображений доступен так, что при нажатии кнопки он проходит через генератор случайных чисел и выводит число, которое случайным образом извлекает изображение из массива. Не волнуйтесь, я надеюсь, что у меня хорошее образование в области генерации случайных чисел.
И да, я понимаю, что это настоящий бардак. За последние пару недель я несколько раз пытался это понять (начал с пары часов в день, чтобы оставаться в здравом уме, заканчивая непрерывными 72-часовыми сеансами, просыпаясь ото сна с разными идеями, которые можно попробовать).
Вот некоторые разделы моего кода, я включаю то, что считаю необходимым, поскольку я написал много, и навигация - это кошмар.
private JPanel topRow, leftPane, mainPane, bottomRow, mPane1;
private JButton btnOne, btnTen, btnHun, btnTho;
private JTextArea mPane2, test;
private String imagePath, name;
private ImageIcon image;
public WSgui() {
super("Character Wish Simulator");
this.setSize(900, 600);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLayout(new BorderLayout());
this.mainPane = new JPanel();
this.mainPane.setBackground(Color.ORANGE);
this.mainPane.setMinimumSize(new Dimension(650, 400));
this.mainPane.setBorder(new EmptyBorder(40,40,40,40));
this.mainPane.setLayout(new BorderLayout());
//buttons
this.btnOne = new JButton("x1 wish");
this.btnOne.setSize(200, 100);
//setting panes for main
this.mPane1 = new JPanel();
int xSize = ((int) mainPane.getSize().getWidth());
int ySize = ((int) mainPane.getSize().getHeight());
int height = (int)(Math.round(ySize * 0.80));
int width = (int)(Math.round(xSize * 0.80));
this.mPane1.setPreferredSize(new Dimension(width, height));
this.mPane1.setMinimumSize(new Dimension(xSize, ySize));
this.mPane1.setMaximumSize(new Dimension(1000, 1000));
this.mPane2 = new JTextArea();
this.mPane2.setText("This should be below the picture");
this.mPane2.setFont(new Font("Dialog", Font.PLAIN, 15));
this.mPane2.setMaximumSize(new Dimension(width, 50));
this.mPane2.setWrapStyleWord(true);
this.mPane2.setLineWrap(true);
this.mPane2.setEditable(false);
this.btnTen = new JButton("x10 wish");
this.btnTen.setSize(200, 50);
this.btnTen.addActionListener(this);
//This idea (action listener) came from StackOverflow, but sadly is not working
this.btnHun = new JButton("x100 wish");
this.btnHun.setSize(200, 50);
this.btnHun.addActionListener(this);
this.btnTho = new JButton("x1000 wish");
this.btnTho.setSize(200, 50);
this.btnTho.addActionListener(this);
//Test image for Main Pane
image = new ImageIcon(bnr);//some more ideas I found
JLabel image5 = new JLabel(image);
JLabel image2 = new JLabel(new ImageIcon(lpImage));
JLabel image3 = new JLabel(new ImageIcon(mImage));
JLabel image4 = new JLabel(new ImageIcon(xtra));
this.mPane1.add(image3);
this.leftPane.add(image2);
this.topRow.add(image5);
this.bottomRow.add(image4);
this.mainPane.add(this.mPane1, BorderLayout.CENTER);
this.mainPane.add(this.mPane2, BorderLayout.SOUTH);
this.btnOne.addActionListener(e -> image5.setIcon(images[3]));
ImageIcon[] images = new ImageIcon[] {//my pathetic attempt at an array
new ImageIcon("img/t1.png"), new ImageIcon("img/t2.png"), new ImageIcon("img/t3.jpg"),
new ImageIcon("img/t4.jpg"), new ImageIcon("img/t5.png")
};
String[] image8 = new String[] {
"img/t1.png"//idk how to explain this one
};
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == btnOne) {
String image9 = image8[0];//and this is what I struggle with
ImageIcon icon9 = new ImageIcon(image9);
icon9.getImage().flush();
image.setIcon(icon9);
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/792 ... is-pressed
Изменение изображения в JPanel при нажатии кнопки ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1733664663
Anonymous
Мне хорошо известно о нескольких других сообщениях подобного характера. Я пытался использовать их, чтобы помочь себе, однако либо я просто что-то упускаю из виду, либо в моем коде не хватает чего-то важного для правильной работы. У меня есть основная JPanel, в которой я пытаюсь изменить изображение каждый раз при нажатии кнопки (и я начинаю понимать, что мой план по изменению макета при нажатии другой кнопки будет намного сложнее), но когда это заходя в раздел @Override, я обнаруживаю, что значок нельзя изменить, или когда я пытаюсь реализовать что-то, что я нахожу из Stack Overflow или из предложенного в VSCode, это приводит к множеству красных линий.
Я хочу иметь массив изображений доступен так, что при нажатии кнопки он проходит через генератор случайных чисел и выводит число, которое случайным образом извлекает изображение из массива. Не волнуйтесь, я надеюсь, что у меня хорошее образование в области генерации случайных чисел.
И да, я понимаю, что это настоящий бардак. За последние пару недель я несколько раз пытался это понять (начал с пары часов в день, чтобы оставаться в здравом уме, заканчивая непрерывными 72-часовыми сеансами, просыпаясь ото сна с разными идеями, которые можно попробовать).
Вот некоторые разделы моего кода, я включаю то, что считаю необходимым, поскольку я написал много, и навигация - это кошмар.
private JPanel topRow, leftPane, mainPane, bottomRow, mPane1;
private JButton btnOne, btnTen, btnHun, btnTho;
private JTextArea mPane2, test;
private String imagePath, name;
private ImageIcon image;
public WSgui() {
super("Character Wish Simulator");
this.setSize(900, 600);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLayout(new BorderLayout());
this.mainPane = new JPanel();
this.mainPane.setBackground(Color.ORANGE);
this.mainPane.setMinimumSize(new Dimension(650, 400));
this.mainPane.setBorder(new EmptyBorder(40,40,40,40));
this.mainPane.setLayout(new BorderLayout());
//buttons
this.btnOne = new JButton("x1 wish");
this.btnOne.setSize(200, 100);
//setting panes for main
this.mPane1 = new JPanel();
int xSize = ((int) mainPane.getSize().getWidth());
int ySize = ((int) mainPane.getSize().getHeight());
int height = (int)(Math.round(ySize * 0.80));
int width = (int)(Math.round(xSize * 0.80));
this.mPane1.setPreferredSize(new Dimension(width, height));
this.mPane1.setMinimumSize(new Dimension(xSize, ySize));
this.mPane1.setMaximumSize(new Dimension(1000, 1000));
this.mPane2 = new JTextArea();
this.mPane2.setText("This should be below the picture");
this.mPane2.setFont(new Font("Dialog", Font.PLAIN, 15));
this.mPane2.setMaximumSize(new Dimension(width, 50));
this.mPane2.setWrapStyleWord(true);
this.mPane2.setLineWrap(true);
this.mPane2.setEditable(false);
this.btnTen = new JButton("x10 wish");
this.btnTen.setSize(200, 50);
this.btnTen.addActionListener(this);
//This idea (action listener) came from StackOverflow, but sadly is not working
this.btnHun = new JButton("x100 wish");
this.btnHun.setSize(200, 50);
this.btnHun.addActionListener(this);
this.btnTho = new JButton("x1000 wish");
this.btnTho.setSize(200, 50);
this.btnTho.addActionListener(this);
//Test image for Main Pane
image = new ImageIcon(bnr);//some more ideas I found
JLabel image5 = new JLabel(image);
JLabel image2 = new JLabel(new ImageIcon(lpImage));
JLabel image3 = new JLabel(new ImageIcon(mImage));
JLabel image4 = new JLabel(new ImageIcon(xtra));
this.mPane1.add(image3);
this.leftPane.add(image2);
this.topRow.add(image5);
this.bottomRow.add(image4);
this.mainPane.add(this.mPane1, BorderLayout.CENTER);
this.mainPane.add(this.mPane2, BorderLayout.SOUTH);
this.btnOne.addActionListener(e -> image5.setIcon(images[3]));
ImageIcon[] images = new ImageIcon[] {//my pathetic attempt at an array
new ImageIcon("img/t1.png"), new ImageIcon("img/t2.png"), new ImageIcon("img/t3.jpg"),
new ImageIcon("img/t4.jpg"), new ImageIcon("img/t5.png")
};
String[] image8 = new String[] {
"img/t1.png"//idk how to explain this one
};
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == btnOne) {
String image9 = image8[0];//and this is what I struggle with
ImageIcon icon9 = new ImageIcon(image9);
icon9.getImage().flush();
image.setIcon(icon9);
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79261930/change-the-image-in-a-jpanel-when-a-button-is-pressed[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия