Вот мой код: я удалил некоторые вещи, которые, по моему мнению, не были нужны. Возможно, я тоже убрал несколько скобок, но я просто пытаюсь показать то, что у меня есть.
Происходит следующее: когда я запускаю программу, фоновое изображение рисуется (это PNG в ресурсах), и появляется только ОДНА кнопка (моя кнопка PLAY), первая кнопка — она выбирается автоматически.
На самом деле у меня четыре кнопки, но я включил только ИГРА и ИНСТРУКЦИИ в моем коде. Остальные три не появятся, если я не наведу на них курсор мыши. Я знаю, что это, вероятно, что-то странное с методом рисования, но я не знаю, как это исправить.
Если я выберу другую кнопку и сверну окно, а затем открою его снова, выбранное Кнопка — единственная, которая появляется. Мне нужно навести указатель мыши, чтобы появились другие кнопки.
Я также добавил super.paint() в метод рисования, и я получаю все свои кнопки, кроме фон серый.
Я думаю, проблема в том, что super.paint() рисует все мои кнопки, а g.drawImage(bg, 0, 0, null) рисует только мой фон, а я невозможно сделать одно, не закрасив другое.
Извините, если это был беспорядок. Я новичок в Java, и мне трудно сформулировать то, что я пытаюсь сказать.
public class MainMenu extends JFrame {
private JPanel contentPane;
/**
* Launch the application.
*/
//variables
public static Image bg;
public static void main(String[] args) {
MainMenu mainFrame = new MainMenu();
mainFrame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
mainFrame.setResizable(false);
mainFrame.setLocationRelativeTo(null);
mainFrame.setTitle ("Zumby");
mainFrame.setLayout(null);
// Loads the background image and stores in bg object.
try {
bg = ImageIO.read(new File("zumby.png"));
} catch (IOException e) {
}
mainFrame.setVisible(true);
}
/**
* Overrides the paint method.
* MONDAY
*/
public void paint(Graphics g)
{
// Draws the img to the BackgroundPanel.
System.out.println("paint");
g.drawImage(bg, 0, 0, null);
}
/**
*/
public MainMenu() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 800, 500);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setOpaque(false);
setContentPane(contentPane);
contentPane.setLayout(null);
//create buttons
JButton btnPlay = new JButton("PLAY");
btnPlay.setBackground(Color.BLACK);
btnPlay.setForeground(Color.WHITE);
btnPlay.setFont(font);
btnPlay.setBorder(border);
btnPlay.setFocusPainted(false);
//if "Play" is clicked
btnPlay.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent click) {
setVisible(false);
new GamePlay(); //opens up GamePlay window
}
});
btnPlay.setBounds(600, 64, 141, 61);
contentPane.add(btnPlay);
JButton btnInstructions = new JButton("INSTRUCTIONS");
btnInstructions.setBounds(600, 160, 141, 61);
btnInstructions.setBackground(Color.BLACK);
btnInstructions.setFocusPainted(false);
// btnInstructions.setEnabled(true);
contentPane.add(btnInstructions);
repaint();
pack();
setVisible(true);
}
}
Подробнее здесь: https://stackoverflow.com/questions/144 ... mouse-over
JButton появляется только при наведении курсора мыши? ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1729789517
Anonymous
Вот мой код: я удалил некоторые вещи, которые, по моему мнению, не были нужны. Возможно, я тоже убрал несколько скобок, но я просто пытаюсь показать то, что у меня есть.
Происходит следующее: когда я запускаю программу, фоновое изображение рисуется (это PNG в ресурсах), и появляется только ОДНА кнопка (моя кнопка PLAY), первая кнопка — она выбирается автоматически.
На самом деле у меня четыре кнопки, но я включил только ИГРА и ИНСТРУКЦИИ в моем коде. Остальные три не появятся, если я не наведу на них курсор мыши. Я знаю, что это, вероятно, что-то странное с методом рисования, но я не знаю, как это исправить.
Если я выберу другую кнопку и сверну окно, а затем открою его снова, выбранное Кнопка — единственная, которая появляется. Мне нужно навести указатель мыши, чтобы появились другие кнопки.
Я также добавил super.paint() в метод рисования, и я получаю все свои кнопки, кроме фон серый.
Я думаю, проблема в том, что super.paint() рисует все мои кнопки, а g.drawImage(bg, 0, 0, null) рисует только мой фон, а я невозможно сделать одно, не закрасив другое.
Извините, если это был беспорядок. Я новичок в Java, и мне трудно сформулировать то, что я пытаюсь сказать.
public class MainMenu extends JFrame {
private JPanel contentPane;
/**
* Launch the application.
*/
//variables
public static Image bg;
public static void main(String[] args) {
MainMenu mainFrame = new MainMenu();
mainFrame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
mainFrame.setResizable(false);
mainFrame.setLocationRelativeTo(null);
mainFrame.setTitle ("Zumby");
mainFrame.setLayout(null);
// Loads the background image and stores in bg object.
try {
bg = ImageIO.read(new File("zumby.png"));
} catch (IOException e) {
}
mainFrame.setVisible(true);
}
/**
* Overrides the paint method.
* MONDAY
*/
public void paint(Graphics g)
{
// Draws the img to the BackgroundPanel.
System.out.println("paint");
g.drawImage(bg, 0, 0, null);
}
/**
*/
public MainMenu() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 800, 500);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setOpaque(false);
setContentPane(contentPane);
contentPane.setLayout(null);
//create buttons
JButton btnPlay = new JButton("PLAY");
btnPlay.setBackground(Color.BLACK);
btnPlay.setForeground(Color.WHITE);
btnPlay.setFont(font);
btnPlay.setBorder(border);
btnPlay.setFocusPainted(false);
//if "Play" is clicked
btnPlay.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent click) {
setVisible(false);
new GamePlay(); //opens up GamePlay window
}
});
btnPlay.setBounds(600, 64, 141, 61);
contentPane.add(btnPlay);
JButton btnInstructions = new JButton("INSTRUCTIONS");
btnInstructions.setBounds(600, 160, 141, 61);
btnInstructions.setBackground(Color.BLACK);
btnInstructions.setFocusPainted(false);
// btnInstructions.setEnabled(true);
contentPane.add(btnInstructions);
repaint();
pack();
setVisible(true);
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/14426896/jbutton-only-appears-on-mouse-over[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия