Quelle TabbedPaneDemo.java
Sprache: JAVA
/*
* Copyright ( c ) 2007 , 2021 , Oracle and / or its affiliates . All rights reserved .
*
* Redistribution and use in source and binary forms , with or without
* modification , are permitted provided that the following conditions
* are met :
*
* - Redistributions of source code must retain the above copyright
* notice , this list of conditions and the following disclaimer .
*
* - Redistributions in binary form must reproduce the above copyright
* notice , this list of conditions and the following disclaimer in the
* documentation and / or other materials provided with the distribution .
*
* - Neither the name of Oracle nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission .
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS " AS
* IS " AND ANY EXPRESS OR IMPLIED WARRANTIES , INCLUDING , BUT NOT LIMITED TO ,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED . IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT , INDIRECT , INCIDENTAL , SPECIAL ,
* EXEMPLARY , OR CONSEQUENTIAL DAMAGES ( INCLUDING , BUT NOT LIMITED TO ,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES ; LOSS OF USE , DATA , OR
* PROFITS ; OR BUSINESS INTERRUPTION ) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY , WHETHER IN CONTRACT , STRICT LIABILITY , OR TORT ( INCLUDING
* NEGLIGENCE OR OTHERWISE ) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE , EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE .
*/
import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTabbedPane;
import javax.swing.SingleSelectionModel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
/**
* JTabbedPane Demo
*
* @ author Jeff Dinkins
*/
public class TabbedPaneDemo extends DemoModule implements ActionListener {
HeadSpin spin;
JTabbedPane tabbedpane;
ButtonGroup group;
JRadioButton top;
JRadioButton bottom;
JRadioButton left;
JRadioButton right;
/**
* main method allows us to run as a standalone demo .
*/
public static void main(String[] args) {
TabbedPaneDemo demo = new TabbedPaneDemo(null );
demo.mainImpl();
}
/**
* TabbedPaneDemo Constructor
*/
public TabbedPaneDemo(SwingSet2 swingset) {
// Set the title for this demo, and an icon used to represent this
// demo inside the SwingSet2 app.
super (swingset, "TabbedPaneDemo" , "toolbar/JTabbedPane.gif" );
// create tab position controls
JPanel tabControls = new JPanel();
tabControls.add(new JLabel(getString("TabbedPaneDemo.label" )));
top = (JRadioButton) tabControls.add(new JRadioButton(getString("TabbedPaneDemo.top" )));
left = (JRadioButton) tabControls.add(new JRadioButton(getString("TabbedPaneDemo.left" )));
bottom = (JRadioButton) tabControls.add(new JRadioButton(getString("TabbedPaneDemo.bottom" )));
right = (JRadioButton) tabControls.add(new JRadioButton(getString("TabbedPaneDemo.right" )));
getDemoPanel().add(tabControls, BorderLayout.NORTH);
group = new ButtonGroup();
group.add(top);
group.add(bottom);
group.add(left);
group.add(right);
top.setSelected(true );
top.addActionListener(this );
bottom.addActionListener(this );
left.addActionListener(this );
right.addActionListener(this );
// create tab
tabbedpane = new JTabbedPane();
getDemoPanel().add(tabbedpane, BorderLayout.CENTER);
String name = getString("TabbedPaneDemo.laine" );
JLabel pix = new JLabel(createImageIcon("tabbedpane/laine.jpg" , name));
tabbedpane.add(name, pix);
name = getString("TabbedPaneDemo.ewan" );
pix = new JLabel(createImageIcon("tabbedpane/ewan.jpg" , name));
tabbedpane.add(name, pix);
name = getString("TabbedPaneDemo.hania" );
pix = new JLabel(createImageIcon("tabbedpane/hania.jpg" , name));
tabbedpane.add(name, pix);
name = getString("TabbedPaneDemo.bounce" );
spin = new HeadSpin();
tabbedpane.add(name, spin);
tabbedpane.getModel().addChangeListener(
new ChangeListener() {
public void stateChanged(ChangeEvent e) {
SingleSelectionModel model = (SingleSelectionModel) e.getSource();
if (model.getSelectedIndex() == tabbedpane.getTabCount()-1 ) {
spin.go();
}
}
}
);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == top) {
tabbedpane.setTabPlacement(JTabbedPane.TOP);
} else if (e.getSource() == left) {
tabbedpane.setTabPlacement(JTabbedPane.LEFT);
} else if (e.getSource() == bottom) {
tabbedpane.setTabPlacement(JTabbedPane.BOTTOM);
} else if (e.getSource() == right) {
tabbedpane.setTabPlacement(JTabbedPane.RIGHT);
}
}
class HeadSpin extends JComponent implements ActionListener {
javax.swing.Timer animator;
ImageIcon[] icon = new ImageIcon[6 ];
int tmpScale;
static final int numImages = 6 ;
double [] x = new double [numImages];
double [] y = new double [numImages];
int [] xh = new int [numImages];
int [] yh = new int [numImages];
double [] scale = new double [numImages];
public HeadSpin() {
setBackground(Color.black);
icon[0 ] = createImageIcon("tabbedpane/ewan.gif" , getString("TabbedPaneDemo.ewan" ));
icon[1 ] = createImageIcon("tabbedpane/stephen.gif" , getString("TabbedPaneDemo.stephen" ));
icon[2 ] = createImageIcon("tabbedpane/david.gif" , getString("TabbedPaneDemo.david" ));
icon[3 ] = createImageIcon("tabbedpane/matthew.gif" , getString("TabbedPaneDemo.matthew" ));
icon[4 ] = createImageIcon("tabbedpane/blake.gif" , getString("TabbedPaneDemo.blake" ));
icon[5 ] = createImageIcon("tabbedpane/brooke.gif" , getString("TabbedPaneDemo.brooke" ));
/*
for ( int i = 0 ; i < 6 ; i + + ) {
x [ i ] = ( double ) rand . nextInt ( 500 ) ;
y [ i ] = ( double ) rand . nextInt ( 500 ) ;
}
*/
}
public void go() {
animator = new javax.swing.Timer(22 + 22 + 22 , this );
animator.start();
}
public void paint(Graphics g) {
g.setColor(getBackground());
g.fillRect(0 , 0 , getWidth(), getHeight());
for (int i = 0 ; i < numImages; i++) {
if (x[i] > 3 *i) {
nudge(i);
squish(g, icon[i], xh[i], yh[i], scale[i]);
} else {
x[i] += .05 ;
y[i] += .05 ;
}
}
}
Random rand = new Random();
public void nudge(int i) {
x[i] += (double ) rand.nextInt(1000 ) / 8756 ;
y[i] += (double ) rand.nextInt(1000 ) / 5432 ;
int tmpScale = (int ) (Math.abs(Math.sin(x[i])) * 10 );
scale[i] = (double ) tmpScale / 10 ;
int nudgeX = (int ) (((double ) getWidth()/2 ) * .8 );
int nudgeY = (int ) (((double ) getHeight()/2 ) * .60 );
xh[i] = (int ) (Math.sin(x[i]) * nudgeX) + nudgeX;
yh[i] = (int ) (Math.sin(y[i]) * nudgeY) + nudgeY;
}
public void squish(Graphics g, ImageIcon icon, int x, int y, double scale) {
if (isVisible()) {
g.drawImage(icon.getImage(), x, y,
(int ) (icon.getIconWidth()*scale),
(int ) (icon.getIconHeight()*scale),
this );
}
}
public void actionPerformed(ActionEvent e) {
if (isVisible()) {
repaint();
} else {
animator.stop();
}
}
}
}
Messung V0.5 in Prozent C=97 H=99 G=97
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-09-02)
¤
*© Formatika GbR, Deutschland
2026-08-25
Neuigkeiten
Aktuelles
Motto des Tages
Open Source Software
Jenseits des Üblichen ....
Besucherstatistik
Statistik
#Sources=1019547
#Domains=890699