Toolbar

Status
Nicht offen für weitere Antworten.

IwiS

Bekanntes Mitglied
Hallo alle zusammen,

ich schreibe ein Programm, das mir bei meinem PC-Alltag, inform einer Schnellzugriffstoolbar, helfen soll. Nun möchte ich aber nicht, dass ich das Programm in der Taskleiste angezeigt bekomme. Gibt es eine Möglichkeit, dass ich ein Programm laufen lassen kann, ohne dass ich es in der Taskleiste angzeigt bekomme?

Vielen Dank für Antworten,
IwiS
 
Nimm statt nem JFrame nen normales [JAPI]JWindow[/JAPI], das sollte dann nicht in der Taskleiste angezeigt werden.
 
Hallo zusammen,

jetzt habe ich noch ein Problem. Ich habe jetzt nur ein JWindow, jedoch habe ich darin ein JTextField eingebaut, was aber nicht editierbar ist. Ich habe schon bei Google die Lösung gefunden, dass man bei JWindow als "owning parent" einen JFrame angeben kann, ich verwende allerdings kein JFrame in meinem Programm. Gibt es jetzt noch eine andere Möglichkeit, in einem JWindow ein funktionierendes JTextField einzufügen?

Danke schon im Vorraus für Antworten,
IwiS
 
Probiers mal aus:
Java:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class MyWindow {
   private JTextField txtField;
   private JButton okButton;
   
   public MyWindow() {
      final JDialog window = new JDialog();
      window.setUndecorated(true);
      window.getContentPane().setBackground(Color.PINK);
      window.setLayout(new GridBagLayout());
      GridBagConstraints gbc = new GridBagConstraints();
      
      txtField = new JTextField(15);
      okButton = new JButton("OK");
      okButton.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            window.dispose();
         }
      });
      
      gbc.anchor = GridBagConstraints.WEST;
      gbc.insets = new Insets(30, 10, 0, 0);
      window.add(new JLabel("Eingabe:"), gbc);

      gbc.gridy = 1;
      gbc.fill = GridBagConstraints.HORIZONTAL;
      gbc.weightx = 1.0;
      gbc.insets = new Insets(0, 10, 30, 5);
      window.add(txtField, gbc);
      
      gbc.gridx = 1;
      gbc.fill = GridBagConstraints.NONE;
      gbc.weightx = 0.0;
      gbc.insets = new Insets(0, 0, 30, 10);
      window.add(okButton, gbc);

      window.pack();
      window.setLocationRelativeTo(null);
      window.setVisible(true);
   }

   public static void main(String[] args) {
      try {
         UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
      }
      catch(Exception e) {
         e.printStackTrace();
      }

      SwingUtilities.invokeLater(new Runnable() {
         public void run() {
            new MyWindow();
         }
      });
   }
}
 
Hi,

ich brauche unbedingt ein JWindow, da gibt es keine andere Möglichkeit.

IwiS

Ja und??? Dann benutz doch eines. Ich sehe da jetzt nichts was dagegen sprechen würde. L-ectron-X hat dir doch schon ein gutes Beispiel geliefert. Du musst uns schon mitteilen, was nicht funktioniert (falls denn was nicht funktioniert!).
 
Das steht aber auch, dass es mit einem TextField funktionieren sollte. Mit Java7 solltest du beim AWT und Swing mischen keine Probleme mehr haben.
 
Habe L-ectron-X Beispiel getestet mit jdk 1.7.0 kompiliert und mit jre 1.7.0... ausgeführt. Sowohl per java als auch per javaw, der Bug bestätigt sich bei mir nicht. Das JTextField bekommt immer den Fokus, sowohl direkt beim Aufploppen des JWindows als auch wenn es den Focus wieder erhält oder man in das JTextField klickt.

Mein System:
Betriebssystem: Windows 7 HomePremium 64 bit
Prozessor: Intel Core i5 650 @3.20 GHz
Arbeitsspeicher: 4 GB Ram
Grafikkarte: ATI Radeon HD 5700 Series

Auf was für Systemen habt ihr denn das ganze getestet?
 
Hallo,

danke für eure Bemühungen. Ich habe das Problem jetzt auf einen anderen Weg gelöst. Nun habe ich aber zwei neue Fragen. Kann ich mein Programm im Quellcode i-wie in den Autostart des Systems packen? Wie kann ich ein JDialog unverschiebbar machen?

Danke für die Antworten im Vorraus,
IwiS
 
Habe L-ectron-X Beispiel getestet mit jdk 1.7.0 kompiliert und mit jre 1.7.0... ausgeführt. Sowohl per java als auch per javaw, der Bug bestätigt sich bei mir nicht. Das JTextField bekommt immer den Fokus, sowohl direkt beim Aufploppen des JWindows als auch wenn es den Focus wieder erhält oder man in das JTextField klickt.

Mein System:
Betriebssystem: Windows 7 HomePremium 64 bit
Prozessor: Intel Core i5 650 @3.20 GHz
Arbeitsspeicher: 4 GB Ram
Grafikkarte: ATI Radeon HD 5700 Series

Auf was für Systemen habt ihr denn das ganze getestet?

In seinem Beispiel wird auch ein JDialog verwendet und nicht JWindow.
 
Zu 1: Google mal Windows Autostart Jar
Zu 2: Setzt den Dialog undecorated (setUndecorated(true))
 
Hallo,

danke für eure Bemühungen. Ich habe das Problem jetzt auf einen anderen Weg gelöst. Nun habe ich aber zwei neue Fragen. Kann ich mein Programm im Quellcode i-wie in den Autostart des Systems packen? Wie kann ich ein JDialog unverschiebbar machen?

Danke für die Antworten im Vorraus,
IwiS

Eine ausführbare Datei von deinen Programm in den Autostartordner packen?
setUndecorated()
 
Hallo,

okay, das Problem mit dem Autostart ist geklärt, obwohl meine Frage nicht beantwortet wurde, ist jetzt aber auch egal. Ich habe meinen Dialog undecorated() gesetzt, doch ich kann mein Fenster problemlos verschieben.

lg IwiS
 
Hallo,

ich arbeite mit Windows 7 (64-bit). Hier ist der bisherige Code:

Java:
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.Properties;
import javax.swing.*;
import com.jtattoo.plaf.smart.SmartLookAndFeel;

public class Toolbar extends JDialog 
{
 JToolBar toolbar;
 public static void main(String[] args)
 {
  try
  {
   UIManager.setLookAndFeel("com.jtattoo.plaf.aluminium.AluminiumLookAndFeel");
  }
  catch(Exception e)
  {
   e.printStackTrace();
  }
  Toolbar tool = new Toolbar();
  tool.setLocation(300, 0);
  tool.setSize(1000, 100);
  tool.setUndecorated(true);
  tool.setVisible(true);
 }
 public Toolbar()
 {
  toolbar = new JToolBar();
  toolbar.setFloatable(false);
  ImageIcon image = new ImageIcon("firefox.png");
  JButton button = new JButton(image);
  button.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent ev)
   {
	try
	{
	Process p = Runtime.getRuntime().exec("\"D:Programme\\Mozilla Firefox\\firefox\"");
	}
	catch(IOException e)
	{
     e.printStackTrace();
	}
   }
  }
  );
  toolbar.add(button);
  ImageIcon image2 = new ImageIcon("thunderbird.png");
  JButton button2 = new JButton(image2);
  button2.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent ev)
   {
	try
	{
     Process p2 = Runtime.getRuntime().exec("\"D:Programme\\Thunderbird\\thunderbird\"");
	}
	catch(IOException e)
	{
     e.printStackTrace();
	}
   }
  }
  );
  toolbar.add(button2);
  add(toolbar);
 }
}

lg IwiS
 
Ich habe auch ein Windows 7 64Bit. Dein Programm funktioniert bei mir (LAF deaktiviert). Ich kann die Toolbar nicht verschieben. Das kann eigentlich auch nicht möglich sein, weil die Titelleiste ausgeblendet ist, und ein Fenster nur durch Klicken in die Titelleiste mit anschließendem Ziehen verschoben werden kann.
Einen MouseListener hast du auch nicht an deinem Dialog registriert...
...ich kann keinen Fehler oder Fehlverhalten feststellen. :bahnhof:
 
Hallo,

wenn ich das Programm ausführe, kann ich es an eine beliebige andere Stelle ziehen. Mein anders Problem wäre noch, dass nach dem Start des Programmes immer der hinterste Button makiert wird. Kann ich das i-wie verhindern?

lg IwiS
 
Versuchs mal mit
Java:
button.setFocusable(false);
button2.setFocusable(false);

Welche Java-Version benutzt du zum Ausführen des Programmes?
 
Hallo,

danke, der Tipp für die Buttons hat funktioniert. Ich benutze Java 7 Update 2.

lg IwiS
 
Also beim besten Willen.
Ich habs jetzt mal unter Ubuntu mit OpenJDK7 probiert. Das Fenster ist nicht verschiebbar. Allerdings wird in der Taskleiste ein Java-Symbol angezeigt.
 
Hi,

ich glaube ich weis, woran der Fehler liegt. Du sagtest ja bei dir sei die Titelleiste ausgeblendet, bei mir aber nicht. Du hast wahrscheinlich ein JWindow verwendet, oder?

lg IwiS
 
Nein. Ich habe mein Codebeispiel und deinen Code unverändert ausgeführt. Darin wird jeweils ein JDialog verwendet, dessen Titelleiste mit setUndecorated(true) ausgeblendet wurde.
Wie gesagt: auch dein Beispiel funktioniert bei mir unter Windows 7 und Ubuntu.

[EDIT]Der TO hat einen weiteren Beitrag zum Thema erstellt, welcher hier zu finden ist.[/EDIT]

Thema geschlossen!
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben