1117 Вопрос и намерение не совсем ясны. Какова цель диалога?
Я предполагаю, что вы хотите собрать некоторую информацию, которая затем может быть передана в FractalTree
для изменения его рендеринга. , Какова цель диалога?
Я предполагаю, что вы хотите собрать некоторую информацию, которая затем может быть передана в FractalTree
для изменения его рендеринга, в этом случае вам, вероятно, нужно поместить диалог перед созданием из FractalTree
public static void gui()
{
// You can put the dialog here...
JFrame f=new JFrame("fractal tree");
//...
Если вы хотите изменить свойства FractalTree
после его отображения, то вам, вероятно, нужно использовать JButton
и ActionListener
и поместить там диалог. ... или предоставить второй вид для непосредственного сбора свойств
Фактически, цель диалогового окна - задать уровень рекурсии. Если я размещу его так, как вы предлагаете, все в порядке, но диалоговое окно появляется само по себе, а не на черной панели, и мне бы хотелось, чтобы оно появилось на панели ...
blockquote>Давайте просто проясним, что ТАК не сайт для обучения или наставничества. Ваша проблема не техническая, а опытная. Вы должны тратить больше времени на чтение учебных пособий, таких как Создание графического интерфейса с помощью Swing и пробование вещей. Так вы станете лучшим разработчиком и научитесь решать свои собственные проблемы.
Судя по вашим отзывам,
JOptionPane
не то, что вам нужно.Вместо этого вам нужно использовать немного другой подход и предоставить свой собственный компонент ввода.
Во-первых, вам нужно изменить
FractalTree
, чтобы вы могли легче изменять свойствоdepth
(и установить начальную глубину на0
, чтобы он прекратил рисовать)public class FractalTree extends JPanel implements ActionListener { private int depth = 0; // set to 0 to stop it from rendering public void setDepth(int depth) { this.depth = depth; repaint(); } public int getDepth() { return depth; }
Далее , вам нужно создать свой собственный компонент ввода, который может принимать ввод от пользователя и обновлять дерево
public class InputPane extends JPanel { private FractalTree fractalTree; private JTextField depthField; public InputPane(FractalTree fractalTree) { this.fractalTree = fractalTree; depthField = new JTextField(10); depthField.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent evt) { String text = depthField.getText().trim(); try { int value = Integer.parseInt(text); fractalTree.setDepth(value); } catch (NumberFormatException exp) { JOptionPane.showMessageDialog(InputPane.this, text + " is not a valid numerical value"); } } }); } }
Затем вы хотите создать новую точку входа, которая может объединить два ...
import java.awt.EventQueue; import javax.swing.JFrame; public class Main { public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { FractalTree tree = new FractalTree(); InputPane input = new InputPane(tree); JFrame frame = new JFrame(); frame.add(tree); frame.add(input, BorderLayout.SOUTH); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } }); } }
Да, это приведет к небольшому окну, потому что
FractalTree
не определяет никаких подсказок по размеру, которые можно решить, переопределив его методgetPreferredSize
и вернув более подходящий размер.Это создаст вам «лучший путь», есть еще проблемы, которые вам придется решать, потому что выполнение всего этого для вас не поможет вам
Вот. Эта ссылка vs2005 конкретный, а не более свежий 2008, но это - версия, о которой Вы спросили.
Некоторые выделения:
Этот список на самом деле довольно длинен, но с существенным исключением управления исходным кодом они - главным образом вещи, которых Вы смогли обходиться без как единственный разработчик, если Вы действительно имеете к. Даже управление исходным кодом может быть обработано единственным файловой системой инструментом как Черепаха.
Очевидно, при создании чего-то как расширение приложения или VS смартфона, это - обреченное на неудачу, таким образом, необходимо будет оценить то, что Вы действительно делаете. Некоторые из других недостающих возможностей как объектный испытательный стенд или профилировщик могут быть частично заменены сторонними программами.
Зависит от того, что Вы делаете. Посмотрите на матрицу продукта для наблюдения, какие функции Вы получаете с более высокими наименованиями. Тестирование, Интеллектуальные устройства, и т.д. может или не может быть важно для Вас.
также, можно добавить дополнения как VisualSVN и Resharper в про. Вы не можете в экспресс.
Matze мог бы быть правильным - MS нужны деньги - 5K люди, уволенные сегодня, и только 4.7b прибыль!:(
Вот ссылка на загружаемое Руководство по Сравнению продуктов Visual Studio 2008 года от Microsoft.
Полная версия Visual Studio поддерживает некоторые дополнительные функции и инструменты.
Одними из больших различий является больше параметров отладки (Можно указать, нарушают условия для отладки, в отличие от специальной версии). Одна только та функция, вероятно, стоит того.
Можно также установить сторонние дополнения для добавления дополнительных опций.
Это действительно просто требует небольшого количества поиска с помощью Google.
Можно просмотреть сравнение заплаченных версий здесь и обзора версий Экспресса здесь
Если Вы делаете какой-либо вид профессиональной разработки с Visual Studio, необходимо купить Стандартный выпуск как минимум. Без него Вы освободите интеграцию Управления исходным кодом, которая, по моему скромному мнению, является жизненной насущной необходимостью, которую никакие вопросы, которые задают, не должны иметь для профессиональной разработки.
Взгляните на это:
http://blogshare.members.winisp.net/docs/VisualStudio2008-ProductComparison-v1.02-Revisions.xps
Я использовал VS2003 некоторое время и в настоящее время использую Экспресс VS2008 C#.
Лично, я пропускаю способность установить условную точку останова вместо того, чтобы просто повредиться, когда строка поражена, и окно Threads.
Поддержка систем версии кода является функцией, которая является реальной основой.
И Microsoft нужны Ваши деньги, чтобы продолжить реализовывать новый, горячий материал.