Перейти к публикации

мастер-форма


Geksa

Рекомендованные сообщения

Делаю кастомизацию мастер-формы. Мне нужно на нее добавить кнопку. Сама кнопка добавляется, но как только вешаю на нее обработчик действия, ТЦ выдает, что не возможно выполнить визуализацию и выдается стандартная форма. С чем это может быть связано? TCE 8.3

Ссылка на сообщение
Поделиться на других сайтах


ТЦ выдает, что не возможно выполнить визуализацию

из под эклипса выдает?
Ссылка на сообщение
Поделиться на других сайтах

В ТС 8.3 на мастер-форме втыкаем кнопку(Swing), вешаем слушатель, простое действие добавление текста в текстовое поле, всё рисуется и срабатывает без проблем. Может что то в вашем коде в обработчике?

Ссылка на сообщение
Поделиться на других сайтах

package com.mycom.forms;

import java.awt.BorderLayout;

import java.awt.GridBagConstraints;

import java.awt.GridBagLayout;

import java.awt.Insets;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JTabbedPane;

import javax.swing.JTextField;

import com.teamcenter.rac.kernel.TCComponentForm;

import com.teamcenter.rac.kernel.TCComponentItem;

import com.teamcenter.rac.util.MessageBox;

public class Bolt2 extends javax.swing.JPanel {

private JPanel jLabel1;

private JPanel jPanel1;

private JTextField oboznachenie;

private JTextField jTextField2;

private JButton jButton;

private JLabel jLabel2;

private JTabbedPane jTabbedPane1;

public Bolt2(TCComponentForm form) {

super();

initGUI(form);

}

private void initGUI(TCComponentForm form) {

try {

TCComponentItem comp = (TCComponentItem) form.getReferenceProperty("item_for_form");

BorderLayout thisLayout = new BorderLayout();

this.setLayout(thisLayout);

{

jLabel1 = new JPanel();

BorderLayout jLabel1Layout = new BorderLayout();

jLabel1.setLayout(jLabel1Layout);

this.add(jLabel1, BorderLayout.NORTH);

jLabel1.setPreferredSize(new java.awt.Dimension(400, 21));

{

jLabel2 = new JLabel();

jLabel1.add(jLabel2, BorderLayout.EAST);

jLabel2.setText("\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b");

jLabel2.setPreferredSize(new java.awt.Dimension(94, 21));

jLabel2.setFont(new java.awt.Font("Tahoma",1,11));

}

}

{

jTabbedPane1 = new JTabbedPane();

this.add(jTabbedPane1, BorderLayout.CENTER);

jTabbedPane1.setPreferredSize(new java.awt.Dimension(400, 282));

{

jPanel1 = new JPanel();

jTabbedPane1.addTab("Общие данные", null, jPanel1, null);

GridBagLayout jPanel1Layout = new GridBagLayout();

jPanel1Layout.rowWeights = new double[] {0.06, 0.06, 0.15, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1};

jPanel1Layout.rowHeights = new int[] {7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7};

jPanel1Layout.columnWeights = new double[] {0.0, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1};

jPanel1Layout.columnWidths = new int[] {40, 20, 118, 24, 170, 29, 78, 37, 28, 7};

jPanel1.setLayout(jPanel1Layout);

jPanel1.setPreferredSize(new java.awt.Dimension(407, 279));

jPanel1.add(getjButton(), new GridBagConstraints(7, 2, 2, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 3, 0, 3), 0, 0));

jPanel1.add(getOboznachenie(), new GridBagConstraints(4, 2, 3, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0));

}

}

{

jTextField2 = new JTextField();

this.add(jTextField2, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));

jTextField2.setText("Bolt");

}

} catch (Exception e) {

e.printStackTrace();

}

}

private JTextField getOboznachenie() {

if(oboznachenie == null) {

oboznachenie = new JTextField();

oboznachenie.setPreferredSize(new java.awt.Dimension(300, 20));

oboznachenie.setText("jTextField1");

}

return oboznachenie;

}

private JButton getjButton() {

if(jButton == null) {

jButton = new JButton();

jButton.setText("М");

jButton.setSize(30, 23);

jButton.addActionListener(new ActionListener(){

@Override

public void actionPerformed(ActionEvent arg0) {

MessageBox.post("Pressed", "", MessageBox.INFORMATION);

}

});

}

return jButton;

}

}

При нажатии всего лишь вывожу сообщение... Может в настройках формы что-то менять надо?

Изменено пользователем Geksa
Ссылка на сообщение
Поделиться на других сайтах

Не слышал про такой нюанс в TCUA - AWT/SWT bridge?Про это также говорится в документации в самом начале.

Не уверен что именно это поможет,но если при кастомизации клиента хотите использовать swing библиотеки и компоненты как в старых версиях,то делать это надо

через AWT/SWT bridge.

Using the SWT/AWT Bridge



Minimally, embedding an AWT frame inside an SWT composite is just two simple lines of code

	

	Composite composite = new Composite(parent, SWT.EMBEDDED | SWT.NO_BACKGROUND);

	Frame frame = SWT_AWT.new_Frame(composite);

	  



An instance of org.eclipse.swt.Composite is created with the SWT.EMBEDDED style. This style signals that an AWT frame is to be embedded inside the Composite. The call to the static new_Frame method creates and returns such a frame. The frame may then be populated with AWT and/or Swing components. 



The returned frame is not a standard AWT frame. By default, it is a subclass of java.awt.Frame that is meant to be embedded within native applications. In fact, it is the same frame that is used to embed applets inside a browser window.
т.е в SWT контейнер нужно встроить AWT компонент, в данном случае frame. А далее можно использовать привычный swing.

Либо используйте новые библиотеки - например JFace или те же SWT.

Ссылка на сообщение
Поделиться на других сайтах

причем тут мост? Это же мастер-форма, она кладется на javax.swing.JPanel, и хорошо работает со свингом.

Ссылка на сообщение
Поделиться на других сайтах

Composite composite = new Composite(parent, SWT.EMBEDDED | SWT.NO_BACKGROUND);

parent здесь откуда и из чего берется?

Ссылка на сообщение
Поделиться на других сайтах

Прицепила ваш болт на тестовый проект, все работает нормально( хотя я бы малость не так сделала). вот скрин во вложении.

Экземпляр формы Bolt2(TCComponentForm form) вызывается из класса MyForm extends AbstractRendering, в котором идет чтение и сохранение атрибутов.

post-32426-1315895154_thumb.jpg

post-32426-1315895170_thumb.jpg

Ссылка на сообщение
Поделиться на других сайтах

Кажется начинаю понимать, в чем дело. Я создаю скомпилированный джава-класс, а потом вызываю его из командной строки. Может не находит какие-то библиотеки..

cd C:\Program Files\Java\jdk1.6.0_26\bin

java -classpath C:\Teamcenter8\bin\Bolt2

Ссылка на сообщение
Поделиться на других сайтах

Кажется начинаю понимать, в чем дело. Я создаю скомпилированный джава-класс, а потом вызываю его из командной строки. Может не находит какие-то библиотеки..

cd C:\Program Files\Java\jdk1.6.0_26\bin

java -classpath C:\Teamcenter8\bin\Bolt2

у вас точно ТС8.3? он же построен на методике плагинов.... зачем вам командная строка? или я что то не понимаю?
Ссылка на сообщение
Поделиться на других сайтах

Точно. Я решила по-другому сделать: чтобы форма появлялась при создании айтема. Вот только возможно ли следующее: Файл->Создать изделие, потом появляется тимцентровская форма, назначается id, имя изделия (изделие 1), нажимается кнопка Готово, потом появляется моя форма, назначается новый айди и имя (изделие 2), и айтем сохраняется уже с новыми значениями? У меня пока только одна мысль: отлавливаю событие сохранения изделия и не позволяю создаться изделию 1, а создаю изделие 2. Но как-то мне это не нравится..

Ссылка на сообщение
Поделиться на других сайтах

Вроде бы в rich_client_customization_programmers_guide.pdf описано как переопределять события ТС, поищите-ка....

назначается id, имя изделия (изделие 1), нажимается кнопка Готово, потом появляется моя форма, назначается новый айди и имя (изделие 2), и айтем сохраняется уже с новыми значениями

а зачем все это надо?, может просто применить правила именования айтемов (или как их там) в администрировании

Ссылка на сообщение
Поделиться на других сайтах

Нее, просто применить правила именования нельзя. Нужно выдать пользователю список, из которого он уже выберет нужное, и на основе этого идет формирование айди и имени.

Ссылка на сообщение
Поделиться на других сайтах

Нужно выдать пользователю список, из которого он уже выберет нужное, и на основе этого идет формирование айди и имени.

создайте свою кнопку в панели инструментов со своим механизмом создания айтема.

Ссылка на сообщение
Поделиться на других сайтах

Да, тоже думала о таком варианте, но хотелось бы чтобы пользователь создавал как обычно, через файл -> создать изделие.

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




  • Сообщения

    • Madmax70
      блок питания заменил, не помогло  пол дня в режиме прогрева станок работал, все было впорядке, запустили детали в обработку проработал 4 часа и перезагрузился, склоняюсь к отдельному блоку питания на чпу,  просматриваю проводку схему приложу, может мысль появится куда смотреть, реле kr1 и kr2 посмотрел, на блоке питания при работе просадок нет никаких, на питании остальной низковольтной части которая берется с  трансформатора и смоста тоже нет просадок,  так как пропадает питание  на траснформаторе т1 буду смотреть что с пускателм и по цепи питания его катушке и по силовой части, пока контакты прозвонил силовые , все ок с основным выключателем думаю все впорядке, так как до пускателя подающего питание на трансформатор т1 напряжение есть, и барфидер подключеный до этого пускателя остается включеным может и сам блок питания остается включеным. схему прилагаю.  мультиметра с записью логов нет у меня Electric Spinturn25_881015.doc
    • ДОБРЯК
      Если вы за две недели разговора на поняли какая задача решается, то я напомню. Есть две разреженные матрицы М и К. К - матрица жесткости, М - матрица масс. Нужно найти n первых собственных чисел и векторов, когда n много меньше размерности матриц. Никому и в голову не придет в этой задаче вычислять обратную матрицу для разреженных матриц большой размерности. Только вы об этом пишите. Напишите алгоритм (дайте ссылку) вычисления первых собственных чисел и векторов для разреженных матриц большой размерности.  Только не пишите еще раз, что вас в школе научили решать квадратные уравнения.:=)
    • fenics555
      да с какого? Мне нужен рычаг от точки А к точки Б, минуя различные детали. Именно это я проектирую, облегчаю, считаю нагрузки, выдаю деталь. далеко Не квадратик.  И откуда я должен знать линию разьема, если я ни разу не проектировал прессформы? Возможно там форма будет состоять из 3х формообразующих, которые разносятся сервоприводами? Или 5-ти? А еще абсолютно на каждом производстве прессформ сидят ( а что тогда им еще делать ) конструктора с начальником отдела, и решают как расположить детали и где будет проходить линия разъема и подвижные формообразующие. Ну вот я свою деятельность начинал в Автоприборе, и там было именно так. Главный конструкторский отдел проектировал детали без всяких лниний и углов, а в инструменталке уже свои конструктора делали всё остальное. Так было и на ВЭМЗе, и ТОЧМАШе, и где бы мы не смотрели производства- везде так. Было. т.е. отдел с конструкторами проектировал узлы и агрегаты, а что будет штамповаться, что литься а что обрабатываться из проката- это вообще не их забота. Их задача- спроектировать рабочий узел.
    • mannul
      Чистовое фрезерование шестигранника 20 фрезой Ф10  
    • IgP
      Взять отсюда не могу ... Выложили бы здесь приложив к сообщению.
    • maxx2000
      открыть в Альтиум, сделать экспорт в СВ или сразу в DXF
    • Ninja
    • Dr.SergeyP
      Добрый день! Есть файл с расширением .schdoc. Делался в Altium Designer. Открывается SolidWorks PCB. Как сохранить этот файл в .dwg/.dxf ?
    • Bot
      Компания «Нанософт», ведущий разработчик российских САПР/ТИМ-решений, объявляет о выходе нового программного продукта для машиностроения – nanoCAD Механика PRO. Бесплатная пробная версия доступна на три месяца, при покупке до 30 сентября 2024 года действует спеццена – от 1000 рублей/месяц. Смотреть полностью
    • AIngenium
×
×
  • Создать...