У меня есть графический интерфейс Java Swing в виде .jar, как мне добавить его на свой сайт в виде HTML-встраивания?

#java #html #swing #jar

#Ява #HTML #качать #кувшин

Вопрос:

Я знаю, что на супер общие вопросы смотрят неодобрительно, но я действительно не знаю, как еще это понять. Я создал графический интерфейс java swing (я опущу код внизу), который работает в качестве оценщика для строительных работ. Он отлично работает в Eclipse, где я его написал, но я пытаюсь понять, как встроить графический интерфейс на свой веб-сайт. Я использую square online для создания своего веб-сайта, и у них есть функция, с помощью которой вы можете добавлять код; для этого не так много документации, но, похоже, она хочет, чтобы встраивание было написано в HTML. Я пытался найти какие-то ресурсы, чтобы помочь мне в этом, но все, что я видел, либо зависит от чего-то, что больше не работает, либо упускает важные детали.

Я превратил графический интерфейс в файл .jar через Eclipse, и я вижу, что он загружен в мою ОС, но это все, что я получил. У меня также установлен OpenWebStart для одного из ресурсов, которые я использовал, но я, честно говоря, не знаю, как его использовать, и тоже не могу этого понять.

Я не уверен, что это трудно или легко сделать в целом, так что извините, если я прошу многого. Если вы знаете какую-либо хорошую документацию, которую я могу использовать для этого, достаточно будет просто ссылки. Спасибо!

Код: (ПРИМЕЧАНИЕ: основная функция графического интерфейса один раз ссылается на другой файл в той же папке, не уверен, что мне нужно как-то добавить это во встраивание, я добавлю его под кодом на всякий случай,)

 package packagepackage; import java.awt.EventQueue; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.UIManager; import javax.swing.UIManager.LookAndFeelInfo; import javax.swing.UnsupportedLookAndFeelException; import javax.swing.text.AttributeSet.ColorAttribute;  public class Test {   public static void main(String[] args) {  new Test();  }   public Test() {  EventQueue.invokeLater(new Runnable() {  @Override  public void run() {  JFrame frame = new JFrame();  frame.add(new TestPane());  frame.pack();  frame.setLocationRelativeTo(null);  frame.setVisible(true);  }  });  }   public class TestPane extends JPanel {  public JLabel tLabel;   public JTextField linear;  public JLabel liLabel;   public JComboBoxlt;Stringgt; sump;  public JLabel suLabel;   public JComboBoxlt;Stringgt; elec;  public JLabel elLabel;   public JTextField prep;  public JLabel prLabel;   public JTextField estimate;  public JLabel esLabel;   public TestPane() {  try {  for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {  if ("Nimbus".equals(info.getName())) {  UIManager.setLookAndFeel(info.getClassName());  break;  }  }  } catch (Exception e) {  // If Nimbus is not available, you can set the GUI to another look and feel.  }  setLayout(new GridBagLayout());  setBackground(Color.BLACK);  setBorder(BorderFactory.createEmptyBorder(16, 16, 16, 16));  GridBagConstraints c = new GridBagConstraints();   String title = "Craftsman Peak Drain Tile Calculator";  tLabel = new JLabel(title, JLabel.CENTER);  tLabel.setForeground(Color.WHITE);  c.fill = GridBagConstraints.HORIZONTAL;  c.weightx = 0.5;  c.ipady = 40;  c.gridwidth = GridBagConstraints.REMAINDER;  c.anchor = GridBagConstraints.CENTER;  c.gridx = 0;  c.gridy = 0;  add(tLabel, c);   c = new GridBagConstraints();  c.anchor = GridBagConstraints.LINE_END;  c.gridy = 1;  c.gridx = 0;   liLabel = new JLabel("Basement Perimeter Length (ft.):");  liLabel.setForeground(Color.WHITE);  prLabel = new JLabel("Time needed to prepare site (min.):");  prLabel.setForeground(Color.WHITE);  suLabel = new JLabel("Using:");  suLabel.setForeground(Color.WHITE);  elLabel = new JLabel("Electrical outlet:");  elLabel.setForeground(Color.WHITE);   add(liLabel, c);  c.gridy  ;  add(prLabel, c);  c.gridy  ;  add(suLabel, c);  c.gridy  ;  add(elLabel, c);   linear = new JTextField(10);  linear.setBackground(Color.BLUE);  linear.setForeground(Color.YELLOW);    prep = new JTextField(10);  prep.setBackground(Color.BLUE);  prep.setForeground(Color.YELLOW);    String[] sumpo = {"New sump pump", "Existing sump pump"};  sump = new JComboBoxlt;gt;(sumpo);  sump.setBackground(Color.BLUE);  sump.setForeground(Color.YELLOW);    String[] electo = {"There is no outlet within 6 feet of the sump pump", "There is an outlet nearby, or I do not need a new pump"};  elec = new JComboBoxlt;gt;(electo);  elec.setBackground(Color.BLUE);  elec.setForeground(Color.YELLOW);   c.anchor = GridBagConstraints.LINE_START;   c.gridx  ;  c.gridy = 1;  add(linear, c);  c.gridy  ;  add(prep, c);  c.gridy  ;  add(sump, c);  c.gridy  ;  add(elec, c);   JButton calculate = new JButton("Calculate");  calculate.addActionListener(new ActionListener() {  public void actionPerformed(ActionEvent event){  // TODO Auto-generated method stub  Integer linVar = Integer.parseInt(linear.getText());  Integer feet = Integer.parseInt(linear.getText());  linVar *= 13;    Object sumps = sump.getSelectedItem();  Integer sumpVar = 0;  if("New sump pump".equals(sumps)) {  sumpVar  = 260;}    Object elecs = elec.getSelectedItem();  Integer elecsVar = 0;  if("There is no outlet within 6 feet of the sump pump".equals(elecs)) {  elecsVar  = 280;}    Integer prepsVar = Integer.parseInt(prep.getText());  prepsVar  = 30;  prepsVar *= 235;  prepsVar /= 100;    linVar  = sumpVar  = elecsVar  = prepsVar;  /* overhead*/  linVar  = 2828;  /* tax */  linVar *= 11;  linVar /= 10;  /* margin */  linVar *= 12;  linVar /= 10;  /* adjustments*/  Integer adjOne = 300;  Integer adjTwo = adjOne -= feet;  adjTwo *= 2;  adjTwo  = 100;  linVar  = adjTwo;    String toWords = " $"   String.valueOf(linVar);    estimate.setUI(new HintTextFieldUI(toWords, true));  }   });   c = new GridBagConstraints();  c.fill = GridBagConstraints.HORIZONTAL;  c.insets = new Insets(10, 0, 10, 0);  c.gridwidth = GridBagConstraints.REMAINDER;  c.gridx = 0;  c.gridy = 5;  add(calculate, c);  calculate.setBackground(Color.BLUE);  calculate.setForeground(Color.YELLOW);    c = new GridBagConstraints();  c.gridx = 0;  c.gridy = 6;  c.anchor = GridBagConstraints.LINE_END;   esLabel = new JLabel("Estimated Cost:");  esLabel.setForeground(Color.WHITE);  estimate = new JTextField(10);  estimate.setBackground(Color.BLUE);  estimate.setForeground(Color.YELLOW);   add(esLabel, c);   c.fill = GridBagConstraints.HORIZONTAL;  c.gridx = 1;  add(estimate, c); // linear.setUI(new HintTextFieldUI("Perimeter length", true)); // prep.setUI(new HintTextFieldUI("Minutes of preptime", true));  }  } }  
 package packagepackage;    import java.awt.Color;  import java.awt.Graphics;  import java.awt.event.FocusEvent;  import java.awt.event.FocusListener;   import javax.swing.plaf.basic.BasicTextFieldUI;  import javax.swing.text.JTextComponent;    public class HintTextFieldUI extends BasicTextFieldUI implements FocusListener {   private String hint;  private boolean hideOnFocus;  private Color color;   public Color getColor() {  return color;  }   public void setColor(Color color) {  this.color = color;  repaint();  }   private void repaint() {  if(getComponent() != null) {  getComponent().repaint();   }  }   public boolean isHideOnFocus() {  return hideOnFocus;  }   public void setHideOnFocus(boolean hideOnFocus) {  this.hideOnFocus = hideOnFocus;  repaint();  }   public String getHint() {  return hint;  }   public void setHint(String hint) {  this.hint = hint;  repaint();  }  public HintTextFieldUI(String hint) {  this(hint,false);  }   public HintTextFieldUI(String string, boolean hideOnFocus) {  this(string,hideOnFocus, null);  }   public HintTextFieldUI(String hint, boolean hideOnFocus, Color color) {  this.hint = hint;  this.hideOnFocus = hideOnFocus;  this.color = color;  }   @Override  protected void paintSafely(Graphics g) {  super.paintSafely(g);  JTextComponent comp = getComponent();  if(hint!=null amp;amp; comp.getText().length() == 0 amp;amp; (!(hideOnFocus amp;amp; comp.hasFocus()))){  if(color != null) {  g.setColor(color);  } else {  g.setColor(comp.getForeground().brighter().brighter().brighter());   }  int padding = (comp.getHeight() - comp.getFont().getSize())/2;  g.drawString(hint, 2, comp.getHeight()-padding-1);   }  }   @Override  public void focusGained(FocusEvent e) {  if(hideOnFocus) repaint();   }   @Override  public void focusLost(FocusEvent e) {  if(hideOnFocus) repaint();  }  @Override  protected void installListeners() {  super.installListeners();  getComponent().addFocusListener(this);  }  @Override  protected void uninstallListeners() {  super.uninstallListeners();  getComponent().removeFocusListener(this);  }  }  

Комментарии:

1.«Путь» раньше был «апплетами». Но апплеты были устаревшими и удалены из API в Java 9. Javascript хорош для выполнения основной работы с веб-интерфейсами. Редактировать: «У меня установлен OpenWebStart» более точный способ сказать, что мой первый комментарий заключается в том, что плагин Java (который позволяет использовать как апплеты, так и веб-запуск) устарел. так что это тоже бесполезно. «Я не уверен, трудно или легко это сделать» — Не столько «трудно» или «легко», сколько невыполнимо.

2. Итак, если апплеты и веб-запуск больше не работают, как я могу встроить свой графический интерфейс java? Нужно ли мне тогда переписывать все это в JS? Наверное, я в замешательстве, потому что если люди все еще пишут что-то в Java IDE, то как они на самом деле реализуют код?

3. А? Я спросил, как что-то сделать, вы сказали, что это невыполнимо, и я пытаюсь понять, что мне нужно сделать, чтобы достичь своей цели-поместить графический интерфейс, который я создал на своем веб-сайте, в качестве встраиваемого

4. Один из нас очень растерян. Возможно, мы оба. ОТО только один из нас на самом деле заботится о том, добьетесь ли вы этого. Со своей стороны, я слишком занят, чтобы разбираться в этом беспорядке.

5. Вы не можете встроить свой графический интерфейс Swing в веб — страницу. Это невозможно объяснить здесь по слишком многим причинам. Это невозможно. Я уже говорил, что это невозможно.