在对话框中,如果选中某个组合,则需要显示一组控件,否则显示另一组控件.即我需要2层,我需要在选中/取消选中组合时在它们之间切换.我怎样才能做到这一点?
谢谢
我有一个显示在JLabel中的HTML表格(带有CSS的样式).我希望单元格的内容(单个短文本行)水平和垂直居中.水平居中很容易,但我似乎无法垂直居中.我试着vertical-align:和valign:既middle和center参数.我已经看了几个技巧,但是没有一个看起来可行,而我试过的那些没有用.
我现在拥有的:
内联(在<style>标签中)CSS:
table.outer {
background:#F0F0F0;
border-collapse:collapse;
border:none;
}
td.outer {
border-style:solid;
border-width:1pt;
border-color:#888888;
padding:0pt 0pt 0pt 0pt;
}
table.inner {
border-collapse:collapse;
border:none;
}
td.title {
width:75pt;
background:#BFBFBF;
padding:1.5pt 0pt 1.5pt 0pt;
}
Run Code Online (Sandbox Code Playgroud)
HTML的相关部分:
<body bgcolor=#F0F0F0>
<table class='outer'>
<tr>
<td class='outer' valign=top>
<table class='inner'>
<tr>
<td class='title' rowspan=3>
<p class='title'>Current Run</p>
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
Run Code Online (Sandbox Code Playgroud) 我有两个JButton文本"Ok"和"Cancel".我用它GridBagLayout来对齐它们JDialog.我把锚设置为GridBagConstraints.CENTER.由于文本"Ok"和"Cancel"中字符数的不同,按钮的大小不同.如何正确对齐它们,使它们每个都具有相同的大小.我试过以下但没有用.
okayButton.setSize(cancelButton.getSize());
Run Code Online (Sandbox Code Playgroud) 我添加了JFreeChart一个JPanel(使用a BorderLayout),它是巨大的.有什么我可以做的让它变小吗?
public void generateChart()
{
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
//set the values of the chart
for(int i=0; i<8; i++)
{
dataset.setValue(income_array[i], "Income",
Double.toString(percent_array[i]));
}
JFreeChart chart = ChartFactory.createBarChart(
"Required Annual Income for a Variety of Interest Rates",
"Percent", "Income", dataset, PlotOrientation.VERTICAL,
false,true, false);
ChartPanel cp = new ChartPanel(chart);
chart.setBackgroundPaint(Color.white);
chart.getTitle().setPaint(Color.black);
CategoryPlot p = chart.getCategoryPlot();
p.setRangeGridlinePaint(Color.blue);
//cp.setMaximumDrawHeight(5);
//cp.setMaximumDrawWidth(5);
//cp.setZoomOutFactor(.1);
JPanel graph = new JPanel();
graph.add(cp);
middle.add(graph, BorderLayout.CENTER);
}
Run Code Online (Sandbox Code Playgroud) 我把一些JPanel放到另一个JPanel中,它的布局是Box Layout和Y-Axis.在我放置所有面板后,我需要从JPanel容器面板中获取每个添加的JPanel的Y位置.但是,当我试图得到它时,每个JPanel的Y位置总是为零.请告诉我如何从JPanel容器JPanel获取每个Jpanel的Y位置.
这就是我所做的,
JPanel panelHolder = new JPanel(new BoxLayout(this, BoxLayout.Y_AXIS));
for(int i = 0; i< 10; i++){
JPanel p = new JPanel();
panelHolder.add(p);
}
int componentCount = panelHolder.getComponentCount();
for (int j = 0; i < componentCount ; j++) {
Component c = pnlRowHolder.getComponent(i);
JPanel p = (JPanel)c;
System.out.println(p.getY());//I get zero for all
}
Run Code Online (Sandbox Code Playgroud) 我想设置一个固定大小的JtextArea内JOptionPane
public static void main(String[] args) {
JTextArea headersTxt = new JTextArea();
for (int i = 0 ; i < 50 ; i ++ ) {
headersTxt.append("test \n") ;
}
JScrollPane scroll = new JScrollPane(headersTxt);
scroll.setSize (300,600) ; // this line silently ignored
int test = JOptionPane.showConfirmDialog(null, scroll,"test", JOptionPane.OK_CANCEL_OPTION) ;
}
Run Code Online (Sandbox Code Playgroud)
但是,上面的代码忽略了 scroll.setSize (300,600) ;
它工作正常,但大小不固定.有什么问题scroll.setSize (300,600) ;?
对于这个糟糕的问题标题感到抱歉,我对这个错误的原因感到困惑,并且不知道该怎么说这个问题.
我正在学习基本的Swing,并从在线书籍Java编程入门中学习这个练习.
我没有按照信中的说明进行操作,而是尝试这样做:
我的实施:
这个bug非常具体:
如果我点击骰子滚动它们,在我调整窗口大小之前,错误将不会出现......
我想我在某个地方犯了一个基本的错误,这个错误只是伪装成这种奇怪的行为.
我试图尽可能地减少代码,只需要花费很长时间就可以解决bug出现时的问题,以及什么时候没有:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class JDie extends JPanel {
private Color color;
private int value;
JDie(){
value = getValue();
color = Color.BLACK;
//add listener
addMouseListener(new MouseAdapter(){
@Override
public void mousePressed(MouseEvent arg0) {
value = getValue(); //'roll' the die
repaint();
}
});
}
/*private helper methods */
private int getValue(){
int …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个扩展到周围JPanel的javafx WebView.根据这一线索:http://www.coderanch.com/t/634791/JavaFX/java/Resizing-HTMLEditor-JavaFX,有在需要调用web视图中的错误GridPane.setHgrow,并GridPane.setVgrow在网页视图.我用这些调用填充了我的代码,但WebView仍然是600x800px.
请注意,场景具有蓝色背景,因此您可以看到javafx内容确实填充了整个JPanel.但是WebView没有填充javafx组/场景.
import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javafx.application.Platform;
import javafx.embed.swing.JFXPanel;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Priority;
import javafx.scene.paint.Color;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
public class Main {
private void initAndShowGUI() {
// This method is invoked on the EDT thread
JFrame frame = new JFrame("Swing and JavaFX");
frame.setSize(1000, 1000);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel(new BorderLayout(0, 0));
frame.getContentPane().add(panel, BorderLayout.CENTER);
JButton button = new JButton("button");
panel.add(button, …Run Code Online (Sandbox Code Playgroud) 请注意我还没有在Mac机器上的Windows机器上测试过这个.我不太确定这是否也出现在Windows机器上......
当我调整Java应用程序的大小时,内容是不可见的.我已经找到一种方法来解决它后调整其大小,但不能同时在用户调整窗口的大小.
我没有使用Swing或其他东西,因为它使我的二进制文件变得如此缓慢(在我看来).
结构是这样的:
Frame 我的主窗口Container内容视图main-windowContainer基于paint(Graphics g)-method 的子视图我已经添加了所有监听器My main-window,现在我可以在调整窗口大小后重绘Content-view .
public void componentResized(ComponentEvent e) {
this.contentView.paint(this.contentView.getGraphics());
}
Run Code Online (Sandbox Code Playgroud)
我谨慎使用paint(getGraphics())-method并不是一个非常好的方法,但是因为repaint()-method根本没有做任何事情,所以它是唯一可行的方法.
调整大小时,所有绘制的内容都变得不可见.但是,当我向我添加Button-instance Content-view并调整我Main-window的大小时,该按钮不会被隐藏.
我是能够追踪"live'调整大小事件:
public void componentMoved(ComponentEvent e) {
System.out.println("Live-resize");
}
Run Code Online (Sandbox Code Playgroud)
当我将repaint-method(或官方重绘方法)添加到像这样的'live'-resize事件时,我仍然得到输出,但是,它没有重新绘制或者某些东西
public void componentMoved(ComponentEvent e) {
System.out.println("Live-resize");
this.contentView.paint(this.contentView.getGraphics());
}
Run Code Online (Sandbox Code Playgroud)
要么
public void componentMoved(ComponentEvent e) {
System.out.println("Live-resize");
this.contentView.repaint();
} …Run Code Online (Sandbox Code Playgroud) 我很难确定要使用的布局.帮助任何建议.

JPanel mainpanel = new JPanel();
public void addPanel(JPanel panel){
mainpanel.add(panel);
}
addPanel(A);
addPanel(B);
addPanel(C);
addPanel(D);
addPanel(E);
....
Run Code Online (Sandbox Code Playgroud)
面板A,B,C,D ......的尺寸不固定.
我怎样才能做到这一点?
java ×10
swing ×9
layout ×2
cardlayout ×1
concurrency ×1
drawing ×1
graphics ×1
html ×1
javafx ×1
jbutton ×1
jfreechart ×1
jlabel ×1
joptionpane ×1
jpanel ×1
jtextarea ×1
minimize ×1
resize ×1
sizing ×1
window ×1