Вход

Просмотр полной версии : NetBeans и формы


Jinc
13.02.2009, 23:08
Есть кнопка New надо чтобы она открывала форму NewJPanel, как сделать?

P.S. В java начинающий непинайте :(

wchk
14.02.2009, 00:30
в каком смысле открывала форму NewJPanel? jPanel это не форма, это контейнер для группировки контролов. Если я правильно понял, то вам надо что типа кнопки на форме, при нажатии которой открывалась другая форма. Для этого создаете 2 jFrame, допустим MainFrame и NewFrame, ну и кадаете на MainFrame кнопку с кодом:


private void megaButtonClick(java.awt.event.ActionEvent evt) {
NewFrame myform = new NewFrame();
myform.setVisible(true);
}

Jinc
14.02.2009, 16:45
спасибо

а вот в приложении которое идёт как пример в netbeans форма открывается так:

@Action
public void showAboutBox() {
if (aboutBox == null) {
JFrame mainFrame = DesktopApplication1.getApplication().getMainFrame( );
aboutBox = new DesktopApplication1AboutBox(mainFrame);
aboutBox.setLocationRelativeTo(mainFrame);
}
DesktopApplication1.getApplication().show(aboutBox );
}

в чём разница?
пробовал сделать по аналогии, не получилось :(

wchk
14.02.2009, 18:22
Разница в том что создается не форма, а диалог - javax.swing.JDialog

Jinc
04.03.2009, 18:11
В продолжении темы "нубовопросы" :)

Есть кномпа Exit как сделть что бы она закрывала приложение?

wchk
06.03.2009, 01:26
В продолжении темы "нубовопросы" :)

Есть кномпа Exit как сделть что бы она закрывала приложение?


private void exitButtonClick(java.awt.event.ActionEvent evt) {
System.exit(0);
}

Jinc
09.03.2009, 14:22
благодарю

Вот ещё вопрос, может ли NetBeans работать с MS Access и что для этого надо? (понимаю что бд не лучшая но всёже)

wchk
09.03.2009, 16:58
да может.
1. Создаете источник данных в панель упр - администрирование - источники данных где указываете расположение бд и т.п, называете его допустим javable. Это все делается во вкладке пользовательский DSN
2. Открываем нетбинс, если ничего не кастомизировали слева есть вкладки projects,files, services. Открываем services-databases-new connection. В basic settings выбираем JDBC-ODBC Bridge, в поле jdbc url записываем ""jdbc:odbc:javable". Все.

Jinc
09.03.2009, 17:04
ошибку выдаёт :(
а если ОС не windows а linux?

wchk
09.03.2009, 22:53
попробуйте выполнить запрос ккй нить. И вообще зачем вам нетбинсом подрубаться?

Jinc
10.03.2009, 00:33
попробуйте выполнить запрос ккй нить.
он даже таблиц не видит

И вообще зачем вам нетбинсом подрубаться?
не понел О_о

а если ОС не windows а linux?

wchk
10.03.2009, 02:40
он даже таблиц не видит
таблицы не видит т.к схема не загружена. Но сиквел запросы нормально выполняет, например select * from table1.

Вообще то можно сделать и без источника данных вписав в урл что то типа:
"jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=c:/mydb.mdb". В линухе наверно как то так.

Jinc
10.03.2009, 18:59
О_о получилось благодарю

Jinc
10.03.2009, 19:41
В проге таже ошибка :(, как я понял из за этого запрос не идёт
сама прога (ftp://10.160.62.172/PUB/finansdb.rar)

wchk
13.03.2009, 20:09
хмм хз, скорее всего jdbc-odbc мост кое чего неподдерживает, поэтому такая хрень. Попробуй найти драйвер подключения к акссесу

Jinc
13.03.2009, 20:47
драйвер искал, нашол токо коммерческие образцы, а хотелось бы бесплатные :(

Jinc
06.04.2009, 19:38
Пытаюсь сделать что бы при нажатие кнопки вылезало диалоговое окно, что на подобие aboutBox(делаю в DesktopApplication1). Создаю диалог-форму с name ab1 и названием формы abJDialog, делаю по анологии с aboutBox но что то не выходит :(


@Action
public void ser() {
if (ab1 == null) {
JFrame mainFrame = DesktopApplication1.getApplication().getMainFrame( );
ab1 = new abJDilog(mainFrame);
ab1.setLocationRelativeTo(mainFrame);
}
DesktopApplication1.getApplication().show(ab1);
}

wchk
06.04.2009, 20:14
во-первых, должна быть обьявленая ab1 как Jdialog(или как там она называется):
Jdialog ab1;

во вторых, обьект у тя неправильно создается - ab1 = new abJDilog(mainFrame);
Класса abJdilog нету, насколько я помню, если конечно же ты сам не создал(скинь полный листинг).

Jinc
06.04.2009, 21:01
/*
* DesktopApplication1View.java
*/

package desktopapplication1;

import org.jdesktop.application.Action;
import org.jdesktop.application.ResourceMap;
import org.jdesktop.application.SingleFrameApplication;
import org.jdesktop.application.FrameView;
import org.jdesktop.application.TaskMonitor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Timer;
import javax.swing.Icon;
import javax.swing.JDialog;
import javax.swing.JFrame;

/**
* The application's main frame.
*/
public class DesktopApplication1View extends FrameView {

public DesktopApplication1View(SingleFrameApplication app) {
super(app);

initComponents();

// status bar initialization - message timeout, idle icon and busy animation, etc
ResourceMap resourceMap = getResourceMap();
int messageTimeout = resourceMap.getInteger("StatusBar.messageTimeout");
messageTimer = new Timer(messageTimeout, new ActionListener() {
public void actionPerformed(ActionEvent e) {
statusMessageLabel.setText("");
}
});
messageTimer.setRepeats(false);
int busyAnimationRate = resourceMap.getInteger("StatusBar.busyAnimationRate");
for (int i = 0; i < busyIcons.length; i++) {
busyIcons[i] = resourceMap.getIcon("StatusBar.busyIcons[" + i + "]");
}
busyIconTimer = new Timer(busyAnimationRate, new ActionListener() {
public void actionPerformed(ActionEvent e) {
busyIconIndex = (busyIconIndex + 1) % busyIcons.length;
statusAnimationLabel.setIcon(busyIcons[busyIconIndex]);
}
});
idleIcon = resourceMap.getIcon("StatusBar.idleIcon");
statusAnimationLabel.setIcon(idleIcon);
progressBar.setVisible(false);

// connecting action tasks to status bar via TaskMonitor
TaskMonitor taskMonitor = new TaskMonitor(getApplication().getContext());
taskMonitor.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
public void propertyChange(java.beans.PropertyChangeEvent evt) {
String propertyName = evt.getPropertyName();
if ("started".equals(propertyName)) {
if (!busyIconTimer.isRunning()) {
statusAnimationLabel.setIcon(busyIcons[0]);
busyIconIndex = 0;
busyIconTimer.start();
}
progressBar.setVisible(true);
progressBar.setIndeterminate(true);
} else if ("done".equals(propertyName)) {
busyIconTimer.stop();
statusAnimationLabel.setIcon(idleIcon);
progressBar.setVisible(false);
progressBar.setValue(0);
} else if ("message".equals(propertyName)) {
String text = (String)(evt.getNewValue());
statusMessageLabel.setText((text == null) ? "" : text);
messageTimer.restart();
} else if ("progress".equals(propertyName)) {
int value = (Integer)(evt.getNewValue());
progressBar.setVisible(true);
progressBar.setIndeterminate(false);
progressBar.setValue(value);
}
}
});
}

@Action
public void showAboutBox() {
if (aboutBox == null) {
JFrame mainFrame = DesktopApplication1.getApplication().getMainFrame( );
aboutBox = new DesktopApplication1AboutBox(mainFrame);
aboutBox.setLocationRelativeTo(mainFrame);
}
DesktopApplication1.getApplication().show(aboutBox );
}
@Action
public void ser() {
if (ab1 == null) {
JFrame mainFrame = DesktopApplication1.getApplication().getMainFrame( );
ab1 = new abJDialog(mainFrame);
ab1.setLocationRelativeTo(mainFrame);
}
DesktopApplication1.getApplication().show(aboutBox );
}

Jinc
06.04.2009, 21:02
продолжение

/** 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() {

mainPanel = new javax.swing.JPanel();
jButton1 = new javax.swing.JButton();
menuBar = new javax.swing.JMenuBar();
javax.swing.JMenu fileMenu = new javax.swing.JMenu();
javax.swing.JMenuItem exitMenuItem = new javax.swing.JMenuItem();
javax.swing.JMenu helpMenu = new javax.swing.JMenu();
javax.swing.JMenuItem aboutMenuItem = new javax.swing.JMenuItem();
statusPanel = new javax.swing.JPanel();
javax.swing.JSeparator statusPanelSeparator = new javax.swing.JSeparator();
statusMessageLabel = new javax.swing.JLabel();
statusAnimationLabel = new javax.swing.JLabel();
progressBar = new javax.swing.JProgressBar();

mainPanel.setName("mainPanel"); // NOI18N

javax.swing.ActionMap actionMap = org.jdesktop.application.Application.getInstance(d esktopapplication1.DesktopApplication1.class).getC ontext().getActionMap(DesktopApplication1View.clas s, this);
jButton1.setAction(actionMap.get("ser")); // NOI18N
jButton1.setName("jButton1"); // NOI18N

javax.swing.GroupLayout mainPanelLayout = new javax.swing.GroupLayout(mainPanel);
mainPanel.setLayout(mainPanelLayout);
mainPanelLayout.setHorizontalGroup(
mainPanelLayout.createParallelGroup(javax.swing.Gr oupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILI NG, mainPanelLayout.createSequentialGroup()
.addContainerGap(313, Short.MAX_VALUE)
.addComponent(jButton1)
.addGap(105, 105, 105))
);
mainPanelLayout.setVerticalGroup(
mainPanelLayout.createParallelGroup(javax.swing.Gr oupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILI NG, mainPanelLayout.createSequentialGroup()
.addContainerGap(234, Short.MAX_VALUE)
.addComponent(jButton1)
.addGap(63, 63, 63))
);

menuBar.setName("menuBar"); // NOI18N

org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(d esktopapplication1.DesktopApplication1.class).getC ontext().getResourceMap(DesktopApplication1View.cl ass);
fileMenu.setText(resourceMap.getString("fileMenu.text")); // NOI18N
fileMenu.setName("fileMenu"); // NOI18N

exitMenuItem.setAction(actionMap.get("quit")); // NOI18N
exitMenuItem.setName("exitMenuItem"); // NOI18N
fileMenu.add(exitMenuItem);

menuBar.add(fileMenu);

helpMenu.setText(resourceMap.getString("helpMenu.text")); // NOI18N
helpMenu.setName("helpMenu"); // NOI18N

aboutMenuItem.setAction(actionMap.get("showAboutBox")); // NOI18N
aboutMenuItem.setName("aboutMenuItem"); // NOI18N
helpMenu.add(aboutMenuItem);

menuBar.add(helpMenu);

statusPanel.setName("statusPanel"); // NOI18N

statusPanelSeparator.setName("statusPanelSeparator"); // NOI18N

statusMessageLabel.setName("statusMessageLabel"); // NOI18N

statusAnimationLabel.setHorizontalAlignment(javax. swing.SwingConstants.LEFT);
statusAnimationLabel.setName("statusAnimationLabel"); // NOI18N

progressBar.setName("progressBar"); // NOI18N

javax.swing.GroupLayout statusPanelLayout = new javax.swing.GroupLayout(statusPanel);
statusPanel.setLayout(statusPanelLayout);
statusPanelLayout.setHorizontalGroup(
statusPanelLayout.createParallelGroup(javax.swing. GroupLayout.Alignment.LEADING)
.addComponent(statusPanelSeparator, javax.swing.GroupLayout.DEFAULT_SIZE, 451, Short.MAX_VALUE)
.addGroup(statusPanelLayout.createSequentialGroup( )
.addContainerGap()
.addComponent(statusMessageLabel)
.addPreferredGap(javax.swing.LayoutStyle.Component Placement.RELATED, 281, Short.MAX_VALUE)
.addComponent(progressBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.Component Placement.RELATED)
.addComponent(statusAnimationLabel)
.addContainerGap())
);
statusPanelLayout.setVerticalGroup(
statusPanelLayout.createParallelGroup(javax.swing. GroupLayout.Alignment.LEADING)
.addGroup(statusPanelLayout.createSequentialGroup( )
.addComponent(statusPanelSeparator, javax.swing.GroupLayout.PREFERRED_SIZE, 2, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.Component Placement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(statusPanelLayout.createParallelGroup(ja vax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(statusMessageLabel)
.addComponent(statusAnimationLabel)
.addComponent(progressBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(3, 3, 3))
);

setComponent(mainPanel);
setMenuBar(menuBar);
setStatusBar(statusPanel);
}// </editor-fold>

// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JPanel mainPanel;
private javax.swing.JMenuBar menuBar;
private javax.swing.JProgressBar progressBar;
private javax.swing.JLabel statusAnimationLabel;
private javax.swing.JLabel statusMessageLabel;
private javax.swing.JPanel statusPanel;
// End of variables declaration

private final Timer messageTimer;
private final Timer busyIconTimer;
private final Icon idleIcon;
private final Icon[] busyIcons = new Icon[15];
private int busyIconIndex = 0;

private JDialog aboutBox;
private JDialog ab1;
}


стандартное DesktopApplication1, токо с попыткой создания еще одного дилог окна

wchk
06.04.2009, 22:41
Ясно. Делаем так:
1. Кидаем на главную форму диалог(контрол jDialog, в группе Swing window справа), называем его к примеру jDialog1.
2. Ну собственно запихиваем туда, то что нужно(надписи рисунки)
3. Кидаем на главную форму кнопку, при нажатии которой откроется jDialog1, ну и прописываем ему action метод:

@Action
public void showMyDialog() {
if(jDialog1 == null) {
JFrame mainFrame = DesktopApplication1.getApplication().getMainFrame( );
jDialog1 = new JDialog(mainFrame);
jDialog1.setLocationRelativeTo(mainFrame);
}
DesktopApplication1.getApplication().show(jDialog1 );
}

Jinc
06.04.2009, 23:38
не получается :( всегда появляется пустой диалог если даже там есть кнопки или картинки

wchk
07.04.2009, 00:56
хм, скинь приложение

Jinc
07.04.2009, 22:46
приложение (ftp://10.160.62.172/UPLOAD/DesktopApplication1.rar)

wchk
08.04.2009, 16:59
Ошибка!
Невозможно подключиться. Возможно, FTP-сервер перегружен.

Вы попытались получить доступ к адресу ftp://10.160.62.172/UPLOAD/DesktopApplication1.rar, который сейчас недоступен. Убедитесь, что веб-адрес (URL) введен правильно, и попытайтесь перезагрузить страницу.
Убедитесь, что соединение с Интернет активно, и проверьте, работают ли другие приложения, использующие это соединение.----------

Jinc
08.04.2009, 18:37
видимо фтп выключили :(
щас нормально

wchk
08.04.2009, 22:48
Ошибка была в том что:
В начале метод initComponents() инициализирует в том числе наш диалог JDialog123 со всеми контролами, затем обьявляется JDialog с названием jDialog123 который null. Т.е замещение типа.

А код который я те выше давал тоже неверен =)

public void showMyDialog() {
if(jDialog1 == null) { //так как Dialog у нас нулл то создаем новый
JFrame mainFrame = DesktopApplication1.getApplication().getMainFrame( );
jDialog1 = new JDialog(mainFrame); // Создается новый диалог без контролов
jDialog1.setLocationRelativeTo(mainFrame);
}
DesktopApplication1.getApplication().show(jDialog1 );
}


В примере для AboutBox создают класс(DesktopApplication1AboutBox) который наследуется от диалог ну и собсно там прописывают какие у него контролы и т.п. Т.е у них

public void showAboutBox() {
if (aboutBox == null) {
JFrame mainFrame = DesktopApplication1.getApplication().getMainFrame( );
aboutBox = new DesktopApplication1AboutBox(mainFrame); // Создается aboutBox с определенными контролами
aboutBox.setLocationRelativeTo(mainFrame);
}
DesktopApplication1.getApplication().show(aboutBox );
}


Мне почему то примеровский aboutBox кажется громоздким. Возможно тру метод именно такой.

В общем как то так. Надеюсь понятно :)

Переделал твое чтобы лишь бы работало ftp://10.160.62.172/UPLOAD/DesktopApplication2.rar

Jinc
08.04.2009, 23:46
работает но что то я не догнал О_о, /* */ , // это же закоментирован т.е код не должен использоваться

wchk
08.04.2009, 23:53
работает но что то я не догнал О_о, /* */ , // это же закоментирован т.е код не должен использоваться

да, сравни я там не только закомментил

Jinc
09.04.2009, 00:21
ыыыыыыы нашел, вот тебе и регистро-чувствительный язык :)