Moin,
ich versuche gerade Labels dynamisch beim Laden eines Fenstern zu erzeugen, benutze dafür eine HashMap.
Hier mal mein aktueller Code (das ganze GroupLayout-Zeug is generierter Code vom Designer):
Bei
schmeißt er mir dann ne IllegalStateException. Kann mir da grad keinen Reim drauf machen, vielleicht könnt ihr mir weiterhelfen?
Danke schonmal
ich versuche gerade Labels dynamisch beim Laden eines Fenstern zu erzeugen, benutze dafür eine HashMap.
Hier mal mein aktueller Code (das ganze GroupLayout-Zeug is generierter Code vom Designer):
Java:
package gui;
import java.awt.Cursor;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import rankingEngine.QueryResult;
import javax.swing.JLabel;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import java.awt.Color;
public class ResultWindow extends javax.swing.JFrame
{
List<QueryResult> list;
public ResultWindow(List<QueryResult> list)
{
getContentPane().setBackground(Color.WHITE);
//this.list = list;
QueryResult result = new QueryResult();
result.setUrl("www.google.de");
result.setTitle("Google");
list.add(result);
result.setUrl("www.wikipedia.de");
result.setTitle("Wikipedia");
list.add(result);
GroupLayout groupLayout = new GroupLayout(getContentPane());
int counter = 0;
HashMap<Integer,JLabel> map = new HashMap<Integer,JLabel>();
for(QueryResult item: list)
{
final String strURL = item.getUrl();
JLabel label = new JLabel("<html><body><a href="+item.getUrl()+">"+item.getTitle()+"</a></body></html>");
map.put(counter, label);
map.get(counter).setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
map.get(counter).addMouseListener(new MouseAdapter()
{
@Override
public void mouseClicked(MouseEvent e)
{
if (e.getClickCount() > 0)
{
// Browseraufruf (für Windows):
try
{
Runtime.getRuntime().exec("cmd.exe /c start "+strURL);
}
catch (IOException e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
});
groupLayout.setHorizontalGroup(
groupLayout.createParallelGroup(Alignment.LEADING)
.addGroup(groupLayout.createSequentialGroup()
.addGap(20)
.addComponent(map.get(counter), GroupLayout.PREFERRED_SIZE, 388, GroupLayout.PREFERRED_SIZE)
.addContainerGap(26, Short.MAX_VALUE))
);
groupLayout.setVerticalGroup(
groupLayout.createParallelGroup(Alignment.LEADING)
.addGroup(groupLayout.createSequentialGroup()
.addContainerGap()
.addComponent(map.get(counter))
.addContainerGap(237, Short.MAX_VALUE))
);
getContentPane().setLayout(groupLayout);
counter++;
}
}
public static void main(String[] args)
{
List<QueryResult> list = new ArrayList<QueryResult>();
ResultWindow window = new ResultWindow(list);
window.setVisible(true);
}
}
Bei
Java:
window.setVisible(true);
schmeißt er mir dann ne IllegalStateException. Kann mir da grad keinen Reim drauf machen, vielleicht könnt ihr mir weiterhelfen?
Danke schonmal