下面列出了javax.swing.JTextPane#setPreferredSize ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
public LocRecordsView(final Window parent, final ServiceFactory factory) {
super(parent, Resources.getLabel("LocRecords"), ModalityType.APPLICATION_MODAL);
final String rawLocRecords = factory.getGeo().getLocRecordsStr();
final JTextPane text = new JTextPane();
text.setEditable(true);
text.setText(rawLocRecords);
text.setPreferredSize(new Dimension(800, 400));
getContentPane().add(text, BorderLayout.CENTER);
final JButton save = new JButton("Save");
save.addActionListener(e -> {
final Pair<String, Exception> error = factory.getGeo().parseAndLoadDNSRecords(text.getText());
text.setText(factory.getGeo().getLocRecordsStr());
if (StringUtils.isNotEmpty(error.getKey())) {
JOptionPane.showMessageDialog(LocRecordsView.this, Resources.getLabel("dns.loc.warning", error.getKey()), Resources.getLabel("warning"),
JOptionPane.WARNING_MESSAGE);
} else {
JOptionPane.showMessageDialog(LocRecordsView.this, Resources.getLabel("dns.loc.updated"));
LocRecordsView.this.dispose();
}
});
getContentPane().add(save, BorderLayout.SOUTH);
pack();
setLocationRelativeTo(parent);
setVisible(true);
}
public static void askUserToUpdate(Library library, Release release) {
JTextPane markdown = new JTextPane(new MarkdownDocument(I18n.Text("NOTE: Existing content for this library will be removed and replaced. Content in other libraries will not be modified.\n\n" + release.getNotes())));
Dimension size = markdown.getPreferredSize();
JScrollPane scroller = new JScrollPane(markdown);
int maxWidth = Math.min(600, WindowUtils.getMaximumWindowBounds().width * 3 / 2);
if (size.width > maxWidth) {
markdown.setSize(new Dimension(maxWidth, Short.MAX_VALUE));
size = markdown.getPreferredSize();
size.width = maxWidth;
markdown.setPreferredSize(size);
}
String update = I18n.Text("Update");
if (WindowUtils.showOptionDialog(null, scroller, String.format(I18n.Text("%s v%s is available!"), library.getTitle(), release.getVersion()), true, JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, new String[]{update, I18n.Text("Ignore")}, update) == JOptionPane.OK_OPTION) {
LibraryUpdater.download(library, release);
}
}
private JPanel getLogPanel() {
JPanel theLogPanel = new JPanel();
theLogPanel.setLayout(new BorderLayout());
myLogPane = new JTextPane();
myLogPane.setPreferredSize(new Dimension(400,300));
editorKit = new HTMLEditorKit();
gameLog = (HTMLDocument) editorKit.createDefaultDocument();;
myLogPane.setEditorKit(editorKit);
myLogPane.setDocument(gameLog);
myLogScroll = new JScrollPane(myLogPane);
myLogScroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
// theScrollPane.setPreferredSize(new Dimension(400,400));
theLogPanel.add(myLogScroll,BorderLayout.CENTER);
Font font = new Font("Times New Roman", Font.PLAIN, 14);
String bodyRule = "body { font-family: " + font.getFamily() + "; " +
"font-size: " + font.getSize() + "pt; }";
((HTMLDocument)myLogPane.getDocument()).getStyleSheet().addRule(bodyRule);// myLogPane.revalidate();
return theLogPanel;
}
private void tryNotify() {
if (GCS.isNotificationAllowed()) {
String update = I18n.Text("Update");
mMode = Mode.DONE;
if (isNewAppVersionAvailable()) {
JTextPane markdown = new JTextPane(new MarkdownDocument(getAppReleaseNotes()));
Dimension size = markdown.getPreferredSize();
JScrollPane scroller = new JScrollPane(markdown);
int maxWidth = Math.min(600, WindowUtils.getMaximumWindowBounds().width * 3 / 2);
if (size.width > maxWidth) {
markdown.setSize(new Dimension(maxWidth, Short.MAX_VALUE));
size = markdown.getPreferredSize();
size.width = maxWidth;
markdown.setPreferredSize(size);
}
if (WindowUtils.showOptionDialog(null, scroller, getAppResult(), true, JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, new String[]{update, I18n.Text("Ignore")}, update) == JOptionPane.OK_OPTION) {
goToUpdate();
}
return;
}
for (Library lib : Library.LIBRARIES) {
if (lib != Library.USER) {
Release release = lib.getAvailableUpgrade();
if (release != null && !release.unableToAccessRepo() && release.hasUpdate() && !release.getVersion().equals(lib.getVersionOnDisk())) {
LibraryUpdateCommand.askUserToUpdate(lib, release);
}
}
}
} else {
Tasks.scheduleOnUIThread(this, 250, TimeUnit.MILLISECONDS, this);
}
}
public CancelOrderDialog(JFrame owner, Market market, AssetOrder order, ContractState state) {
super(owner, ModalityType.APPLICATION_MODAL);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setTitle(tr("canc_cancel_order"));
isToken = market.getTokenID()!=null;
this.market = market;
this.order = order;
this.state = state;
conditions = new JTextPane();
conditions.setContentType("text/html");
conditions.setPreferredSize(new Dimension(80, 160));
conditions.setEditable(false);
acceptBox = new JCheckBox(tr("dlg_accept_terms"));
// Create a button
JPanel buttonPane = new JPanel(new FlowLayout(FlowLayout.RIGHT));
pin = new JPasswordField(12);
pin.addActionListener(this);
calcelButton = new JButton(tr("dlg_cancel"));
okButton = new JButton(tr("dlg_ok"));
getRootPane().setDefaultButton(okButton);
calcelButton.addActionListener(this);
okButton.addActionListener(this);
if(Globals.getInstance().usingLedger()) {
ledgerStatus = new JTextField(26);
ledgerStatus.setEditable(false);
buttonPane.add(new Desc(tr("ledger_status"), ledgerStatus));
LedgerService.getInstance().setCallBack(this);
}
else
buttonPane.add(new Desc(tr("dlg_pin"), pin));
buttonPane.add(new Desc(" ", calcelButton));
buttonPane.add(new Desc(" ", okButton));
// set action listener on the button
JPanel content = (JPanel)getContentPane();
content.setBorder(new EmptyBorder(4, 4, 4, 4));
JPanel conditionsPanel = new JPanel(new BorderLayout());
conditionsPanel.setBorder(BorderFactory.createTitledBorder(tr("dlg_terms_and_conditions")));
conditionsPanel.add(new JScrollPane(conditions), BorderLayout.CENTER);
conditionsPanel.add(acceptBox, BorderLayout.PAGE_END);
JPanel centerPanel = new JPanel(new BorderLayout());
centerPanel.add(conditionsPanel, BorderLayout.PAGE_END);
content.add(centerPanel, BorderLayout.CENTER);
content.add(buttonPane, BorderLayout.PAGE_END);
suggestedFee = Globals.getInstance().getNS().suggestFee().blockingGet();
boolean isBuy = false;
if(order!=null && order.getType() == AssetOrder.OrderType.BID)
isBuy = true;
if(state!=null && state.getType() == ContractType.BUY)
isBuy = true;
StringBuilder terms = new StringBuilder();
terms.append(PlaceOrderDialog.HTML_STYLE);
terms.append("<h3>").append(tr("canc_terms_brief", isBuy ? tr("token_buy") : tr("token_sell"), market,
isToken ? order.getId() : state.getAddress().getRawAddress())).append("</h3>");
if(isToken) {
terms.append("<p>").append(tr("canc_terms_token",
NumberFormatting.BURST.format(suggestedFee.getPriorityFee().longValue()))).append("</p>");
}
else {
terms.append("<p>").append(tr("canc_terms_contract",
state.getBalance().toUnformattedString(),
NumberFormatting.BURST.format(state.getActivationFee() + suggestedFee.getPriorityFee().longValue()))
).append("</p>");
}
conditions.setText(terms.toString());
conditions.setCaretPosition(0);
pack();
}
public RegisterContractDialog(Window owner, boolean isBuy) {
super(owner, ModalityType.APPLICATION_MODAL);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
this.isBuy = isBuy;
setTitle(tr("reg_register"));
conditions = new JTextPane();
conditions.setPreferredSize(new Dimension(240, 220));
acceptBox = new JCheckBox(tr("dlg_accept_terms"));
// The number of contracts to register
SpinnerNumberModel numModel = new SpinnerNumberModel(1, 1, 10, 1);
numOfContractsSpinner = new JSpinner(numModel);
JPanel numOfContractsPanel = new Desc(tr("reg_num_contracts"), numOfContractsSpinner);
numOfContractsSpinner.addChangeListener(this);
// Create a button
JPanel buttonPane = new JPanel(new FlowLayout(FlowLayout.RIGHT));
pin = new JPasswordField(12);
pin.addActionListener(this);
cancelButton = new JButton(tr("dlg_cancel"));
okButton = new JButton(tr("dlg_ok"));
cancelButton.addActionListener(this);
okButton.addActionListener(this);
buttonPane.add(new Desc(tr("dlg_pin"), pin));
buttonPane.add(new Desc(" ", cancelButton));
buttonPane.add(new Desc(" ", okButton));
JPanel content = (JPanel)getContentPane();
content.setBorder(new EmptyBorder(4, 4, 4, 4));
JPanel conditionsPanel = new JPanel(new BorderLayout());
conditionsPanel.setBorder(BorderFactory.createTitledBorder(tr("dlg_terms_and_conditions")));
JScrollPane scroll = new JScrollPane(conditions);
scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scroll.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
scroll.setPreferredSize(conditions.getPreferredSize());
conditionsPanel.add(scroll, BorderLayout.CENTER);
conditionsPanel.add(acceptBox, BorderLayout.PAGE_END);
JPanel centerPanel = new JPanel(new BorderLayout());
centerPanel.add(conditionsPanel, BorderLayout.CENTER);
content.add(numOfContractsPanel, BorderLayout.PAGE_START);
content.add(centerPanel, BorderLayout.CENTER);
content.add(buttonPane, BorderLayout.PAGE_END);
contract = Contracts.getCompiler(isBuy ? ContractType.BUY : ContractType.SELL);
stateChanged(null);
pack();
}
@Override
public void startup() {
Container content = this;
content.setLayout(new BorderLayout());
JLabel logoLabel = new JLabel(Icons.getIcon("img/top_logo.png"));
logoLabel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
JPanel logo = new JPanel(new BorderLayout());
logo.setBackground(Color.WHITE);
logo.add(logoLabel);
content.add(logo, BorderLayout.PAGE_START);
JTextPane license = new JTextPane();
license.setEditable(false);
final JScrollPane licenseScroll = new JScrollPane(license);
licenseScroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
StyledDocument doc = license.getStyledDocument();
Style regular = StyleContext.getDefaultStyleContext().getStyle(StyleContext.DEFAULT_STYLE);
try {
doc.insertString(doc.getLength(), LICENSE_TEXT, regular);
} catch (BadLocationException e) {
e.printStackTrace();
}
license.setPreferredSize(new Dimension(360, 100));
content.add(licenseScroll, BorderLayout.CENTER);
SwingUtilities.invokeLater(() -> licenseScroll.getVerticalScrollBar().setValue(0));
JPanel footer = new JPanel(new BorderLayout());
footer.setBackground(Color.WHITE);
// Add Copyright & Credits
String copyright = "<html>Build " + Opt4J.getDateISO() + " <br /> Version " + Opt4J.getVersion()
+ " \u00a9 Opt4J.org 2007</html>";
JLabel copyrightLabel = new JLabel(copyright);
copyrightLabel.setHorizontalAlignment(SwingConstants.CENTER);
copyrightLabel.setVerticalAlignment(SwingConstants.BOTTOM);
copyrightLabel.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3));
footer.add(copyrightLabel, BorderLayout.EAST);
String credits = "<html><p>Credits:<br />";
for (String author : AUTHORS) {
credits += author + "<br/>";
}
credits += "</p></html>";
JLabel creditsLabel = new JLabel(credits);
creditsLabel.setHorizontalAlignment(SwingConstants.CENTER);
creditsLabel.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3));
footer.add(creditsLabel, BorderLayout.WEST);
content.add(footer, BorderLayout.PAGE_END);
}
JHTML(String s)
{
super(new BorderLayout());
html = new JTextPane();
html.setEditable(false); // need to set this explicitly to fix swing 1.3 bug
html.setCaretPosition(0);
html.setContentType("text/html");
// Enable posting of form submit events to the hyper link listener
final HTMLEditorKit htmlEditor
= (HTMLEditorKit)html.getEditorKitForContentType("text/html");
try {
// Call htmlEditor.setAutoFormSubmission(false); if available (Java 5+)
final Method setAutoFormSubmissionMethod = htmlEditor.getClass()
.getMethod("setAutoFormSubmission", new Class[]{ Boolean.TYPE});
setAutoFormSubmissionMethod.invoke(htmlEditor,
new Object[]{Boolean.FALSE});
} catch (final Throwable t) {
Activator.log.warn("Failed to enable auto form submission for JHTMLBundle.", t);
}
html.setText(s);
html.setCaretPosition(0);
html.addHyperlinkListener(new HyperlinkListener() {
@Override
public void hyperlinkUpdate(HyperlinkEvent ev)
{
if (ev.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
final URL url = ev.getURL();
try {
if (Util.isBundleLink(url)) {
final long bid = Util.bidFromURL(url);
Activator.disp.getBundleSelectionModel().clearSelection();
Activator.disp.getBundleSelectionModel().setSelected(bid, true);
} else if (Util.isImportLink(url)) {
JCMInfo.importCfg(JHTML.this);
} else {
Util.openExternalURL(url);
}
} catch (final Exception e) {
Activator.log.error("Failed to show " + url, e);
}
}
}
});
scroll =
new JScrollPane(html, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
html.setPreferredSize(new Dimension(300, 300));
add(scroll, BorderLayout.CENTER);
}
private void aboutMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_aboutMenuItemActionPerformed
String version = MainFrame.class.getPackage().getImplementationVersion();
if (version == null) {
version = "unknown";
}
JTextPane textPane = new JTextPane();
textPane.setEditable(false);
textPane.setContentType("text/html");
textPane.setText(
"<font face=sans-serif><strong><font size=+2>ProCamCalib</font></strong> version " + version + "<br>" +
"Copyright (C) 2009-2014 Samuel Audet <<a href=\"mailto:[email protected]%28Samuel%20Audet%29\">[email protected]</a>><br>" +
"Web site: <a href=\"http://www.ok.ctrl.titech.ac.jp/~saudet/procamcalib/\">http://www.ok.ctrl.titech.ac.jp/~saudet/procamcalib/</a><br>" +
"<br>" +
"Licensed under the GNU General Public License version 2 (GPLv2).<br>" +
"Please refer to LICENSE.txt or <a href=\"http://www.gnu.org/licenses/\">http://www.gnu.org/licenses/</a> for details."
);
textPane.setCaretPosition(0);
Dimension dim = textPane.getPreferredSize();
dim.height = dim.width*3/4;
textPane.setPreferredSize(dim);
textPane.addHyperlinkListener(new HyperlinkListener() {
public void hyperlinkUpdate(HyperlinkEvent e) {
if(e.getEventType() == EventType.ACTIVATED) {
try {
Desktop.getDesktop().browse(e.getURL().toURI());
} catch(Exception ex) {
Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE,
"Could not launch browser to \"" + e.getURL()+ "\"", ex);
}
}
}
});
// pass the scrollpane to the joptionpane.
JDialog dialog = new JOptionPane(textPane, JOptionPane.PLAIN_MESSAGE).
createDialog(this, "About");
if ("com.sun.java.swing.plaf.gtk.GTKLookAndFeel".equals(UIManager.getLookAndFeel().getClass().getName())) {
// under GTK, frameBackground is white, but rootPane color is OK...
// but under Windows, the rootPane's color is funny...
Color c = dialog.getRootPane().getBackground();
textPane.setBackground(new Color(c.getRGB()));
} else {
Color frameBackground = this.getBackground();
textPane.setBackground(frameBackground);
}
dialog.setVisible(true);
}
private void aboutMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_aboutMenuItemActionPerformed
String version = MainFrame.class.getPackage().getImplementationVersion();
if (version == null) {
version = "unknown";
}
JTextPane textPane = new JTextPane();
textPane.setEditable(false);
textPane.setContentType("text/html");
textPane.setText(
"<font face=sans-serif><strong><font size=+2>ProCamTracker</font></strong> version " + version + "<br>" +
"Copyright (C) 2009-2014 Samuel Audet <<a href=\"mailto:[email protected]%28Samuel%20Audet%29\">[email protected]</a>><br>" +
"Web site: <a href=\"http://www.ok.ctrl.titech.ac.jp/~saudet/procamtracker/\">http://www.ok.ctrl.titech.ac.jp/~saudet/procamtracker/</a><br>" +
"<br>" +
"Licensed under the GNU General Public License version 2 (GPLv2).<br>" +
"Please refer to LICENSE.txt or <a href=\"http://www.gnu.org/licenses/\">http://www.gnu.org/licenses/</a> for details."
);
textPane.setCaretPosition(0);
Dimension dim = textPane.getPreferredSize();
dim.height = dim.width*3/4;
textPane.setPreferredSize(dim);
textPane.addHyperlinkListener(new HyperlinkListener() {
public void hyperlinkUpdate(HyperlinkEvent e) {
if(e.getEventType() == EventType.ACTIVATED) {
try {
Desktop.getDesktop().browse(e.getURL().toURI());
} catch(Exception ex) {
Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE,
"Could not launch browser to \"" + e.getURL()+ "\"", ex);
}
}
}
});
// pass the scrollpane to the joptionpane.
JDialog dialog = new JOptionPane(textPane, JOptionPane.PLAIN_MESSAGE).
createDialog(this, "About");
if ("com.sun.java.swing.plaf.gtk.GTKLookAndFeel".equals(UIManager.getLookAndFeel().getClass().getName())) {
// under GTK, frameBackground is white, but rootPane color is OK...
// but under Windows, the rootPane's color is funny...
Color c = dialog.getRootPane().getBackground();
textPane.setBackground(new Color(c.getRGB()));
} else {
Color frameBackground = this.getBackground();
textPane.setBackground(frameBackground);
}
dialog.setVisible(true);
}