ラベル Swing の投稿を表示しています。 すべての投稿を表示
ラベル Swing の投稿を表示しています。 すべての投稿を表示

2011年9月13日火曜日

複数フレーム

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

class NewFrame extends JFrame {

 public NewFrame(String string) {
  // TODO 自動生成されたコンストラクター・スタブ
  super(string);
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

  JPanel p1 = new JPanel();
  p1.setPreferredSize(new java.awt.Dimension(600, 270));
  Container contentPane = getContentPane();
  contentPane.add(p1, BorderLayout.NORTH);
  contentPane.add(new JLabel("Xボタンで子ウインドウも閉じる"));

  pack();

  System.out.println(Toolkit.getDefaultToolkit().getScreenSize());
  Dimension size = Toolkit.getDefaultToolkit().getScreenSize();
  System.out.println(size.width);
  setLocation(size.width / 2, size.height / 2);
  setVisible(true);
 }
}

class NewFrame2 extends JFrame {

 public NewFrame2(String string) {
  // TODO 自動生成されたコンストラクター・スタブ
  super(string);
  setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
  JPanel p1 = new JPanel();
  p1.setPreferredSize(new java.awt.Dimension(600, 270));
  Container contentPane = getContentPane();
  contentPane.add(p1, BorderLayout.NORTH);
  contentPane.add(new JLabel("Xボタンを押しても親ウインドウは閉じない"));

  pack();
  Dimension size = Toolkit.getDefaultToolkit().getScreenSize();
  setLocation(size.width / 2 + 30, size.height / 2 + 30);
  setVisible(true);
 }
}

class NewFrame3 extends JFrame {

 public NewFrame3(String string) {
  // TODO 自動生成されたコンストラクター・スタブ
  super(string);
  setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
  JPanel p1 = new JPanel();
  p1.setPreferredSize(new java.awt.Dimension(600, 270));
  Container contentPane = getContentPane();
  contentPane.add(p1, BorderLayout.NORTH);
  contentPane.add(new JLabel("Xボタンを押しても親ウインドウは閉じない"));

  pack();
  Dimension size = Toolkit.getDefaultToolkit().getScreenSize();
  setLocation(size.width / 2 + 60, size.height / 2 + 60);
  setVisible(true);
 }
}

public class swingTestSlider {
 public static void main(String[] args) {
  new NewFrame("親フレーム");
  new NewFrame2("子ウインドウ");
  new NewFrame3("子ウインドウ2");
 }
}

setDefaultCloseOperation :JFrameで有効 ApplicationFrameでは使えない
EXIT_ON_CLOSE クローズボタンのクリック時にプログラムの実行を終了する
DISPOSE_ON_CLOSE  クローズボタンのクリック時に JFrame を破棄する
DO_NOTHING_ON_CLOSE クローズボタンをクリックしても何もしない
HIDE_ON_CLOSE クローズボタンのクリック時にウィンドウを隠す

Dimension getSize ( ) フレームの大きさを獲得します

棒グラフ-IntervalXYDataset

import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYBarRenderer;
import org.jfree.data.xy.IntervalXYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;

public class swingTestSlider extends ApplicationFrame {

 private static class DemoPanel extends JPanel implements ChangeListener {

  JSlider slider;
  ValueAxis xAxis;
  XYSeries series;
  
  public DemoPanel() {
   super(new BorderLayout());
   
   IntervalXYDataset dataset = createDataset();
   JFreeChart chart = createChart(dataset);
   
   ChartPanel chartPanel = new ChartPanel(chart);
   chartPanel.setPreferredSize(new java.awt.Dimension(600, 270));

   add(chartPanel);

   JPanel panel = new JPanel(new BorderLayout());
   
   this.slider = new JSlider();
   slider.setMaximum(series.getItemCount());
   slider.setValue(series.getItemCount());
   
   this.slider.addChangeListener(this);
   panel.add(this.slider);
   add(panel, BorderLayout.SOUTH);
  }

  private JFreeChart createChart(IntervalXYDataset dataset) {
   final JFreeChart chart = ChartFactory.createXYBarChart(
     "IntervalXYDataset", "X", false, "Y", dataset,
     PlotOrientation.VERTICAL, true, true, false);
   
   XYPlot plot = (XYPlot) chart.getPlot();

   NumberAxis numberaxis = (NumberAxis) plot.getDomainAxis();
   numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
   
   xAxis = plot.getDomainAxis();
   xAxis.setAutoRange(false);
   xAxis.setRange(80, 100);
   
   plot.setRenderer(new XYBarRenderer());
   XYBarRenderer renderer = (XYBarRenderer) chart.getXYPlot().getRenderer();
   renderer.setMargin(0.1);;

   return chart;
  }
  /*
   * グラフデータを作る
   */
  private IntervalXYDataset createDataset() {
   
   series = new XYSeries("XYSeriesデータ");
   
   for ( int i = 1 ; i < 101 ; i++){
    series.add(i, 100+i);
   }

   final XYSeriesCollection dataset = new XYSeriesCollection(series);
   return dataset;
  }//グラフデータを作るここまで

  @Override
  public void stateChanged(ChangeEvent event) {
   xAxis.setRange(slider.getValue()-20, slider.getValue());
   //System.out.println(slider.getValue());
  }

 }//class MakePanel ここまで

 public swingTestSlider(String title) {
  super(title);
  setContentPane(new DemoPanel());
 }

 public static JPanel createDemoPanel() {
  return new DemoPanel();
 }

 public static void main(String[] args) {
  swingTestSlider demo = new swingTestSlider("XYBarChart");
  demo.pack();
  RefineryUtilities.centerFrameOnScreen(demo);
  demo.setVisible(true);
 }

}

2011年9月12日月曜日

slider - 目盛りの設定

import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

import java.awt.BorderLayout;

public class JSliderTest1 extends JFrame implements ChangeListener {

 JSlider slider;
 JLabel label;

 JSliderTest1(String string) {
  super(string);

  slider = new JSlider();

  slider.setMaximum(200); /* スライダの最大値 */
  slider.setMinimum(0); /* スライダの最小値 */
  slider.setValue(150); /* スライダの値 */
  slider.setMajorTickSpacing(50); /* 大きな目盛りの間隔 */
  slider.setMinorTickSpacing(10); /* 小さな目盛りの間隔 */
  slider.setPaintTicks(true);     /* 目盛りを表示 */
  slider.setPaintLabels(true);    /* ラベルを表示 */
  slider.addChangeListener(this);

  JPanel panel = new JPanel();
  panel.add(slider);

  label = new JLabel();
  label.setText("スライダーの値:" + slider.getValue());

  getContentPane().add(panel, BorderLayout.CENTER);
  getContentPane().add(label, BorderLayout.SOUTH);
 }

 public static void main(String[] args) {
  JSliderTest1 frame = new JSliderTest1("スライダーテスト");
  frame.pack();
  frame.setVisible(true);
 }

 @Override
 public void stateChanged(ChangeEvent arg0) {
  // TODO 自動生成されたメソッド・スタブ
  label.setText("スライダーの値:" + slider.getValue());
 }
}

slider - 最大値・最小値の設定

import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

import java.awt.BorderLayout;

public class JSliderTest1 extends JFrame implements ChangeListener {

 JSlider slider;
 JLabel label;

 JSliderTest1(String string) {
  super(string);

  slider = new JSlider();

  slider.setMaximum(500); /* スライダの最大値 */
  slider.setMinimum(0); /* スライダの最小値 */

  slider.addChangeListener(this);

  JPanel panel = new JPanel();
  panel.add(slider);

  label = new JLabel();
  label.setText("スライダーの値:" + slider.getValue());

  getContentPane().add(panel, BorderLayout.CENTER);
  getContentPane().add(label, BorderLayout.SOUTH);
 }

 public static void main(String[] args) {
  JSliderTest1 frame = new JSliderTest1("スライダーテスト");
  frame.pack();
  frame.setVisible(true);
 }

 @Override
 public void stateChanged(ChangeEvent arg0) {
  // TODO 自動生成されたメソッド・スタブ
  label.setText("スライダーの値:" + slider.getValue());
 }
}

slider - 値の取得

import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

import java.awt.BorderLayout;

public class JSliderTest1 extends JFrame implements ChangeListener {

 JSlider slider;
 JLabel label;

 JSliderTest1(String string) {
  super(string);

  slider = new JSlider();
  slider.addChangeListener(this);

  JPanel panel = new JPanel();
  panel.add(slider);

  label = new JLabel();
  label.setText("スライダーの値:" + slider.getValue());

  getContentPane().add(panel, BorderLayout.CENTER);
  getContentPane().add(label, BorderLayout.SOUTH);
 }

 public static void main(String[] args) {
  JSliderTest1 frame = new JSliderTest1("スライダーテスト");
  frame.pack();
  frame.setVisible(true);
 }

 @Override
 public void stateChanged(ChangeEvent arg0) {
  // TODO 自動生成されたメソッド・スタブ
  label.setText("スライダーの値:" + slider.getValue());
 }
}