Java开发网 Java开发网
注册 | 登录 | 帮助 | 搜索 | 排行榜 | 发帖统计  

您没有登录

» Java开发网 » Java SE 综合讨论区 » 实战错误讨论  

按打印兼容模式打印这个话题 打印话题    把这个话题寄给朋友 寄给朋友    该主题的所有更新都将Email到你的邮箱 订阅主题
flat modethreaded modego to previous topicgo to next topicgo to back
作者 Core Java 2卷1中的例程问题(第六版的例程9-11)
hynso





发贴: 6
积分: 0
于 2006-07-28 21:40 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
我的是第六版的,例程9-11

import java.awt.*;
import java.awt.event.*;
import java.text.*;
import java.util.*;
import javax.swing.*;

/**
A program to test spinners.
*/
public class SpinnerTest
{
public static void main (String[] args)
{
SpinnerFrame frame = new SpinnerFrame();
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
frame.show ();
}
}

class SpinnerFrame extends JFrame
{
public static final int DEFAULT_WIDTH = 400;
public static final int DEFAULT_HEIGHT = 250;

private JPanel mainPanel;
private JButton okButton;

public SpinnerFrame ()
{
setTitle("SpinnerTest");
setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
Container contentPane = getContentPane();
JPanel buttonPanel = new JPanel();
okButton = new JButton("OK");
buttonPanel.add (okButton);
contentPane.add (buttonPanel,BorderLayout.SOUTH);
mainPanel = new JPanel();
mainPanel.setLayout (new GridLayout(0,3));
contentPane.add (mainPanel,BorderLayout.CENTER);

JSpinner defaultSpinner = new JSpinner();
addRow("Default",defaultSpinner);

JSpinner boundedSpinner = new JSpinner(
new SpinnerNumberModel(5,0,10,0.5));
addRow("Bounded",boundedSpinner);

String[] fonts = GraphicsEnvironment
.getLocalGraphicsEnvironment ()
.getAvailableFontFamilyNames ();

JSpinner listSpinner = new JSpinner(
new SpinnerListModel(fonts));
addRow("List",listSpinner);

JSpinner reverseListSpinner = new JSpinner(
new SpinnerListModel(fonts)
{
public Object getNextValue()
{
return super.getPreviousValue();
}
public Object getpreviousValue()
{
return super.getNextValue();
}


});
addRow("Reverse",reverseListSpinner);

JSpinner dateSpinner = new JSpinner(
new SpinnerDateModel());
addRow("Date",dateSpinner);

JSpinner betterDateSpinner = new JSpinner(
new SpinnerDateModel());
String pattern =((SimpleDateFormat)
DateFormat.getDateInstance ()).toPattern ();
betterDateSpinner.setEditor (new JSpinner.DateEditor(
betterDateSpinner,pattern));
addRow("Better Date",betterDateSpinner);

JSpinner timeSpinner = new JSpinner(
new SpinnerDateModel(
new GregorianCalendar(2000,Calendar.JANUARY,1,
12,0,0).getTime(),null,null,Calendar.HOUR));
addRow("Time",timeSpinner);

JSpinner permSpinner = new JSpinner(
new PermutationSpinnerModel("meat"));
addRow("Word permutation",permSpinner);
}

/**
Add a row to the main panel.
@parame labelText the label of the spinner
@parame spinner the sample spinner
*/
public void addRow(String labelText,final JSpinner spinner)
{
mainPanel.add (new JLabel(labelText));
mainPanel.add (spinner);
final JLabel valueLabel = new JLabel();
mainPanel.add (valueLabel);
okButton.addActionListener (new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
Object value = spinner.getValue ();
valueLabel.setText (value.toString());
}
});
}
}

/**
A model that dynamically generates word permutations
*/
class PermutationSpinnerModel extends AbstractSpinnerModel
{
private String word;

public PermutationSpinnerModel(String w)
{
word = w;
}

public Object getValue()
{
return word;
}

public void setValue(Object value)
{
if (!(value instanceof String))
throw new IllegalArgumentException();
word = (String) value;
fireStateChanged();
}

public Object getNextValue()
{
StringBuffer buffer = new StringBuffer(word);
for (int i = buffer.length() - 1; i > 0; i--)
{
if (buffer.charAt (i - 1) < buffer.charAt(i))
{
int j = buffer.length () - 1;
while (buffer.charAt (i - 1) > buffer.charAt (j)) j--;
swap(buffer, i - 1, j);
reverse(buffer, i, buffer.length() - 1);
return buffer.toString ();
}
}
reverse(buffer, 0, buffer.length() - 1);
return buffer.toString ();
}

public Object getPreviousValue()
{
StringBuffer buffer = new StringBuffer(word);
for (int i = buffer.length() - 1; i > 0; i--)
{
if (buffer.charAt (i - 1) > buffer.charAt (i))
{
int j = buffer.length () - 1;
while (buffer.charAt (i - 1) < buffer.charAt (j)) j--;
swap(buffer, i - 1, j);
reverse(buffer, i, buffer.length() - 1);
return buffer.toString ();
}
}
reverse(buffer, 0, buffer.length() - 1);
return buffer.toString ();
}

private static void swap(StringBuffer buffer, int i, int j)
{
char temp = buffer.charAt (i);
buffer.setCharAt (i,buffer.charAt (j));
buffer.setCharAt (j,temp);
}

private static void reverse(StringBuffer buffer, int i, int j)
{
while (i < j) { swap(buffer, i, j); i++; j--; }
}
}

程序能运行,但红字的地方都不起作用了。我晕,变量 i 全变灯泡了,也不想改了,望高手指点。


{ check "Disable Smileys" to show 变量 i instead of 灯泡. }


why edited on 2006-07-31 19:52


话题树型展开
人气 标题 作者 字数 发贴时间
6117 Core Java 2卷1中的例程问题(第六版的例程9-11) hynso 5650 2006-07-28 21:40
5217 Re:Core Java 2卷1中的例程问题 tomcatexpert 37 2006-07-31 16:00

flat modethreaded modego to previous topicgo to next topicgo to back
  已读帖子
  新的帖子
  被删除的帖子
Jump to the top of page

   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923