[java]パン屑もどき
2009/04/01
java
ナビゲーション
パンくず
- Breadcrumbs In Web Design: Examples And Best Practices | Design Showcase | Smashing Magazine
- パンくず詳解 | コリス
Javaです。パンくずです。
パンくずってすごくすぐれたナビゲーションだと思います。
既存の部品でそれっぽいの作成してみます。
JLabelを使ってます。HTMLコードをsetTextして見え方を変えてます。
配置するパネルのレイアウトをFlowLayoutにしています。
以下、コード
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Breadcrumbs {
public static void main(String[] args) {
final JFrame frame = new JFrame() {
{
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setAlwaysOnTop(true);
}
};
frame.getContentPane().add(new _Breadcrumbs() {
{
addBread("aaaa");
addBread(">");
addBread("bbbb");
addBread(">");
addBread("cccc");
addBread(">");
addBread("dddd");
}
});
frame.setVisible(true);
}
static class _Breadcrumbs extends JPanel {
public _Breadcrumbs() {
super();
setLayout(new FlowLayout());
}
public void addBread(String s) {
add(new MyLabel(s));
}
}
static class MyLabel extends JLabel {
{
final String _HTML_ = "<html><body><u>%s</u></body>";
final String SEPA = ">";
setForeground(Color.BLUE);
addMouseMotionListener(new MouseAdapter() {
{
addMouseListener(this);
}
String tmp;
@Override
public void mouseEntered(MouseEvent e) {
tmp = getText();
// 区切りなら入れ替えない
if (SEPA.equals(tmp))
return;
setText(String.format(_HTML_, getText()));
}
@Override
public void mouseExited(MouseEvent e) {
setText(tmp);
}
});
}
public MyLabel(String s) {
super(s);
}
}
}
import java.awt.FlowLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Breadcrumbs {
public static void main(String[] args) {
final JFrame frame = new JFrame() {
{
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setAlwaysOnTop(true);
}
};
frame.getContentPane().add(new _Breadcrumbs() {
{
addBread("aaaa");
addBread(">");
addBread("bbbb");
addBread(">");
addBread("cccc");
addBread(">");
addBread("dddd");
}
});
frame.setVisible(true);
}
static class _Breadcrumbs extends JPanel {
public _Breadcrumbs() {
super();
setLayout(new FlowLayout());
}
public void addBread(String s) {
add(new MyLabel(s));
}
}
static class MyLabel extends JLabel {
{
final String _HTML_ = "<html><body><u>%s</u></body>";
final String SEPA = ">";
setForeground(Color.BLUE);
addMouseMotionListener(new MouseAdapter() {
{
addMouseListener(this);
}
String tmp;
@Override
public void mouseEntered(MouseEvent e) {
tmp = getText();
// 区切りなら入れ替えない
if (SEPA.equals(tmp))
return;
setText(String.format(_HTML_, getText()));
}
@Override
public void mouseExited(MouseEvent e) {
setText(tmp);
}
});
}
public MyLabel(String s) {
super(s);
}
}
}
: