Короче, сделал я в NetBeans вот такую штуку (код ниже).
Проблема такова: когда запускаю, через Applet Viewer - всё работает.
Когда запускаю .html файлик, который указан на картинке, в общем, в нём сам апплет открывается, а вот рисунки нет.
Как мне заставить их работать и через браузер?
Куда мне засунуть эти картинки и где создать .html файл так, чтобы запустив его у меня всё работало?
(суть программы такая: один лэйбл, две кнопки - вперёд и назад, в лейбле отображается картинка, а кнопками она переключается на другую, поэтому, очень важно, чтобы картинки грузились, а они вот не грузятся)
public class Applet extends javax.swing.JApplet {
int x=0;
String one = "/1.png";
String two = "/2.png";
String three = "/3.png";
String four = "/4.png";
String five = "/5.png";
String six = "/6.png";
String seven = "/7.png";
@Override
public void init() {
this.setSize(305, 370);
try {
java.awt.EventQueue.invokeAndWait(new Runnable() {
public void run() {
initComponents();
ImageIcon image = new ImageIcon(getClass().getResource(one));
jLabel1.setIcon(image);
}
});
} catch (Exception ex) {
ex.printStackTrace();
}
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jPanel3 = new javax.swing.JPanel();
jPanel1 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jPanel2 = new javax.swing.JPanel();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
jPanel3.setLayout(jPanel3Layout);
jPanel3Layout.setHorizontalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 100, Short.MAX_VALUE)
);
jPanel3Layout.setVerticalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 100, Short.MAX_VALUE)
);
jPanel1.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 300, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE))
);
jPanel2.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
jPanel2.setToolTipText("");
jButton1.setText("Next");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jButton2.setText("Previous");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jButton2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 152, Short.MAX_VALUE)
.addComponent(jButton1)
.addContainerGap())
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton1)
.addComponent(jButton2))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
}// </editor-fold>
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
x=x+1;
if (x==0) {
ImageIcon image = new ImageIcon(getClass().getResource(one));
jLabel1.setIcon(image);
}
if (x==1) {
ImageIcon image = new ImageIcon(getClass().getResource(two));
jLabel1.setIcon(image);
}
if (x==2) {
ImageIcon image = new ImageIcon(getClass().getResource(three));
jLabel1.setIcon(image);
}
if (x==3) {
ImageIcon image = new ImageIcon(getClass().getResource(four));
jLabel1.setIcon(image);
}
if (x==4) {
ImageIcon image = new ImageIcon(getClass().getResource(five));
jLabel1.setIcon(image);
}
if (x==5) {
ImageIcon image = new ImageIcon(getClass().getResource(six));
jLabel1.setIcon(image);
}
if (x==6) {
ImageIcon image = new ImageIcon(getClass().getResource(seven));
jLabel1.setIcon(image);
}
if (x>=6) {x=0;}
if (x<0) {x=6;}
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
x=x-1;
if (x>=6) {x=0;}
if (x<=0) {x=6;}
if (x==0) {
ImageIcon image = new ImageIcon(getClass().getResource("/images/1.png"));
jLabel1.setIcon(image);
}
if (x==1) {
ImageIcon image = new ImageIcon(getClass().getResource("/images/2.png"));
jLabel1.setIcon(image);
}
if (x==2) {
ImageIcon image = new ImageIcon(getClass().getResource("/images/3.png"));
jLabel1.setIcon(image);
}
if (x==3) {
ImageIcon image = new ImageIcon(getClass().getResource("/images/4.png"));
jLabel1.setIcon(image);
}
if (x==4) {
ImageIcon image = new ImageIcon(getClass().getResource("/images/5.png"));
jLabel1.setIcon(image);
}
if (x==5) {
ImageIcon image = new ImageIcon(getClass().getResource("/images/6.png"));
jLabel1.setIcon(image);
}
if (x==6) {
ImageIcon image = new ImageIcon(getClass().getResource("/images/7.png"));
jLabel1.setIcon(image);
}
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JLabel jLabel1;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
// End of variables declaration
}
В папке тоже есть.
Толку 0.
Если я пропишу /images/3.png - ничего не измениться.
Внутри программы все эти пути подходят, но в браузере не показывает всё равно.
а http://www.mysupersite.lv/images/3.png показывает его нормально?
Попробуй слить скрины в какую папку с исполняемым файлом, например "huimagae"
и прописать
String one = "huimages/1.png";
Или тут глянь:
http://docs.oracle.com/javase/tutorial/2d/images/loadimage.html
Я не жава спец =(
и прописать
String one = "huimages/1.png";
Или тут глянь:
http://docs.oracle.com/javase/tutorial/2d/images/loadimage.html
Я не жава спец =(
В папке тоже есть.
Толку 0.
Если я пропишу /images/3.png - ничего не измениться.
Внутри программы все эти пути подходят, но в браузере не показывает всё равно.
а http://www.mysupersite.lv/images/3.png показывает его нормально?
О, ты уже на SO вопрос задал)
Толку 0.
Если я пропишу /images/3.png - ничего не измениться.
Внутри программы все эти пути подходят, но в браузере не показывает всё равно.
Думаю, что дело в коде, нужна команда грубая какая-нибудь, примитивная, чтобы просто взять и вывести изображение в браузере.
Я не могу этого добиться никаким способом, из всех, что я пробовал, сейчас.
Зато, когда я писал программу - пару раз непонятным образом удалось это сделать.
Я пробовал много раз написать заново, даже с нуля, по всем ступеням, но не могу добиться эффекта.
Не выводятся они у меня через браузер.
Когда запускаю .html файлик, который указан на картинке, в общем, в нём сам апплет открывается, а вот рисунки нет.
хз я жаву не знаю, проверь это:
1. убери "/" в путях к файлам, укажи имя непосредственно - этот слеш заставляет искать ресурсы в текущей директории, очевидно при загрузке апплета из разных директорий этот путь тоже будет разный - поищи методы как в консоль выводить текущую рабочую директорию
2. разве нет способа эмбедить картинки в апплет и указывать прямой путь к ним или название файла без слеша впереди?
3. если у тебя картинки не ембедятся а динамически подгрудаются может секурити в браузере не даёт локально ей файлы открывать или какой-то косяк жавы и херятся пути - попробуй грузить картинки через какой-нибудь URL реквест, почитай здесь: http://stackoverflow.com/questions/12486768/how-do-i-insert-an-image-into-my-java-applet
Вот реально всё по делу, но всё это я уже попробовал. Секюрити точно отбросил уже. И слэши уже всех возможностей попробовал. Пробовал так же и URL'ы грузить, вместо файлов с компьютера. Всё равно их не отображает. В один момент было вообще так, что я загрузил несколько картинок, одинаковых практически, на сервер, все линки работали, но отображались лишь две картинки (разрешение и формат одинаковый у всех картинок был). И вот тут меня постигла мысль, что это что-то просто неадекватное.
В общем, я решил забить на URL и найти способ грузить с компьютера, должен же он быть однозначно...
Но я не могу его найти.
Не могу директорию найти или запаковать проект так, чтобы он одновременно и в NetBeans показывал всё и в браузере.
Часами гугл копал.
Когда запускаю .html файлик, который указан на картинке, в общем, в нём сам апплет открывается, а вот рисунки нет.
хз я жаву не знаю, проверь это:
1. убери "/" в путях к файлам, укажи имя непосредственно - этот слеш заставляет искать ресурсы в текущей директории, очевидно при загрузке апплета из разных директорий этот путь тоже будет разный - поищи методы как в консоль выводить текущую рабочую директорию
2. разве нет способа эмбедить картинки в апплет и указывать прямой путь к ним или название файла без слеша впереди?
3. если у тебя картинки не ембедятся а динамически подгрудаются может секурити в браузере не даёт локально ей файлы открывать или какой-то косяк жавы и херятся пути - попробуй грузить картинки через какой-нибудь URL реквест, почитай здесь: http://stackoverflow.com/questions/12486768/how-do-i-insert-an-image-into-my-java-applet
картинки же находятся в classes a ne images.
А вообще я бы тебе с радостью помог, если бы сам не был таким же нубасом6 постигающим Джава дзен всего 4 месяца.
Толку-то от другой среды программирования? учиться надо на простой =)
Научи меня Джаве
Очень сложно на первых парах - слишком много непонятных ошибок и различных интерфейсов... все эти "проекты" и т.п.
Нельзя просто файлик создать и запустить, нужно кучу всего ещё сделать.
По крайней мере, такое у меня первое впечатление. :>