В нем и рисуй, как нравится. Например, так:реализуется метод paintComponent() ... второе изображение сверху первого
public void paintComponent(Graphics g) {
Image image = null;
Image image2 = null;
try {
image = ImageIO.read(new URL("https://www.kharkovforum.com/images/misc/vbulletin3_logo_white.gif"));
image2 = ImageIO.read(new URL("https://www.kharkovforum.com/images/kharkov.gif"));
} catch (Throwable ex) {ex.printStackTrace();}
g.drawImage(image, 0, 0, null);
g.drawImage(image2, 22, 22, 77, 77, Color.LIGHT_GRAY, null);
}
Повесь слушатель на нужные элементы.как по нажатию на кнопке
Я ничего не понял.причем gif, имеющий прозрачную область
Почитай статьи на тему: "культура программирования". Хотя б в IDE делай "Format" кода. (В Netbeans: Alt+Shift+F)делать пытался вот так:
тут больше:програмистов тут походу маловато
public void paintComponent(final Graphics g){
super.paintComponents(g);
g.drawImage(backGround, WIDTH_BACK_GROUND, HEIGHT_BACK_GROUND, null);
addKeyListener(new KeyListener (){
public void keyPressed(KeyEvent e){
if (e.getKeyCode() == KeyEvent.VK_DOWN){
g.drawImage(start, WIDTH_START, HEIGHT_START, null);
}
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
});
}
package main;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JPanel;
public class Menu extends JPanel{
private static final long serialVersionUID = 1L;
public static final int WIDTH_BACK_GROUND = 0;
public static final int HEIGHT_BACK_GROUND = 0;
private Image backGround;
private Image start, startSelect;
Menu(){
try{
backGround = ImageIO.read(new File("BackGround.jpg"));
start = ImageIO.read(new File("Start.gif"));
startSelect = ImageIO.read(new File("StartSelect.gif"));
} catch (IOException e){
e.printStackTrace();
}
final ButtonMenu buttonStart = new ButtonMenu(start, startSelect, true);
setLayout(null);
buttonStart.setBounds(80, 80, 150, 20);
add(buttonStartGame);
addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
if (e.getKeyCode() == KeyEvent.VK_UP){
buttonStart.selectVisible(false);
buttonStart.repaint();
repaint();
}
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
}
});
setSize(800, 600);
setVisible(true);
}
public void paintComponent(Graphics g){
super.paintComponents(g);
g.drawImage(backGround, WIDTH_BACK_GROUND, HEIGHT_BACK_GROUND, null);
}
}
package main;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Image;
public class ButtonMenu extends Component{
private static final long serialVersionUID = 1L;
private Image image1;
private Image image2;
private boolean visible;
public ButtonMenu(Image image1, Image image2, boolean visible){
this.image1 = image1;
this.image2 = image2;
this.visible = visible;
}
public void paint(Graphics g){
if (visible == true){
g.drawImage(image1, 0, 0, null);
}
else {
g.drawImage(image2, 0, 0, null);
}
}
public void selectVisible(boolean select){
this.visible = select;
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable(){
public void run(){
new Menu();
}
}
}
Ты переопределил метод, рисующий компонету. Так что первые две строчки смысла не имеют.setLayout(null);
add(buttonStartGame);
...
@Override
public void paintComponent(Graphics g){...}
Компоненты swing "видимые" по-умолчанию.setVisible(true);
Менеджеры компоновки вызывают метод getPreferredSize(), a не getSize().setSize(800, 600);
Рекурсивно:Как добавлять слушатель на все компоненты?
public static void addKeyListenerToAll(Component c, KeyListener kl) {
if (c instanceof Container) {
for (Component component : ((Container) c).getComponents()) {
addKeyListenerToAll(component, kl);
}
}
c.addKeyListener(kl);
}
да ладно, нельзя.в классе реализующем JFrame вообще нельзя этот слушатель добавить.