У меня есть графический интерфейс, написанный с использованием netbeans с несколькими простыми компонентами на месте. Я хочу, чтобы иметь возможность рисовать изображения (любой тип файла, что бы ни было проще) вместе с компонентами GUI внутри JFrame.Простые изображения изображений в Java
Не нужно изменять их размеры, просто нарисуйте их так, как они есть, в выбранном мной месте x и y. На каждом обновлении будет отображаться несколько изображений, некоторые из них будут скрыты, а другие будут отображаться. Обновление будет происходить каждые 5 секунд или около того, так что это быстро не проблема.
Если было бы возможно связать события с изображениями, которые были бы нажаты, это было бы неплохо, но не обязательно.
Это чрезвычайно простая задача, перед которой я пока не смог получить простой ответ.
Как мне это сделать?
Благодаря
package Pokertable;
/* * Для того, чтобы изменить этот шаблон, выберите Tools | Шаблоны * и откройте шаблон в редакторе. */
/* * ClientWindow.java * * Создан 12 сен 2009, 9:10:48 PM */
/** * * @author Роберт */ общественного класса ClientWindow расширяет javax.swing.JFrame {
/** Creates new form ClientWindow */
public ClientWindow() {
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jScrollPane1 = new javax.swing.JScrollPane();
jTextField1 = new javax.swing.JTextField();
jScrollPane2 = new javax.swing.JScrollPane();
jTextArea1 = new javax.swing.JTextArea();
jCheckBox2 = new javax.swing.JCheckBox();
imagePanel1 = new Pokertable.ImagePanel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Not Logged In");
getContentPane().setLayout(null);
jTextField1.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyTyped(java.awt.event.KeyEvent evt) {
jTextField1KeyTyped(evt);
}
});
jScrollPane1.setViewportView(jTextField1);
getContentPane().add(jScrollPane1);
jScrollPane1.setBounds(0, 540, 170, 22);
jTextArea1.setColumns(20);
jTextArea1.setRows(5);
jScrollPane2.setViewportView(jTextArea1);
getContentPane().add(jScrollPane2);
jScrollPane2.setBounds(0, 440, 166, 96);
jCheckBox2.setText("Sit Out Next Hand");
jCheckBox2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jCheckBox2ActionPerformed(evt);
}
});
getContentPane().add(jCheckBox2);
jCheckBox2.setBounds(0, 410, 113, 23);
getContentPane().add(imagePanel1);
imagePanel1.setBounds(130, 130, 100, 100);
pack();
}// </editor-fold>
private void jCheckBox2ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void jTextField1KeyTyped(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new ClientWindow().setVisible(true);
}
});
}
// Variables declaration - do not modify
private Pokertable.ImagePanel imagePanel1;
private javax.swing.JCheckBox jCheckBox2;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JTextArea jTextArea1;
private javax.swing.JTextField jTextField1;
// End of variables declaration
}
У меня нет большого опыта работы с netbeans, поэтому это выглядит великолепно, но я не уверен, как его использовать. Как добавить класс в качестве настраиваемого компонента? Как и когда эти объекты получают экземпляр? Также само изображение не может знать, должно ли оно быть видимым, и если да, то где оно должно быть нарисовано при каждом обновлении. Эта информация находится в другом классе, который будет периодически переходить к графике, чтобы обновлять себя, с информацией о том, что должно отображаться и где. Еще раз спасибо за помощь ... это будет огромный шаг вперед. – Allen
Теперь я не могу вспомнить, где именно была кнопка «добавить в палитру», но ищите ее, ее не должно быть трудно найти. Затем вы выбираете свой класс и добавляете его. Вы можете перетащить класс из учебника пакета на свою форму, и он появится там. Видимость JPanel контролируется в суперклассе JPanel, поэтому не беспокойтесь об этом. Просто попробуйте. – Bozho
Неважно, насколько я могу сделать компонент ImagePanel относительно размера изображений, которые я хочу отобразить? Нужна ли мне одна из этих панелей на изображение? Где в коде выше можно вызвать метод setImage()? Кроме того, я не могу просто перетащить все на место раньше времени, так как изображения будут отображаться при различных координатах x и y. Итак, как мне добавить их «на лету», по месту моего выбора и как удалить существующий из представления в заданном цикле обновления? – Allen